13数组实现顺序堆栈的基本操作
2013-04-21 22:34
323 查看
运行如下所示:
/*018数组实现顺序堆栈的基本操作*/
#include <stdio.h>
#define MaxStackSize 100
typedef int DataType;
typedef struct
{
DataType stack[MaxStackSize];
int top;
}SeqStack;
/*初始化顺序堆栈S*/
void StackInitiate(SeqStack *S)
{
S->top = 0;
}
/*判断堆栈S非空否,非空返回1,否则返回0*/
int StackNotEmpty(SeqStack *S)
{
if(S->top <= 0)
return 0;
else
return 1;
}
/*把数据元素值x存入顺序堆栈S中,入栈成功则返回1,否则返回0*/
int StackPush(SeqStack *S , DataType x)
{
if(S->top >= MaxStackSize)
{
printf("堆栈已满无法插入!\n");
return 0;
}
else
{
S->stack[S->top] = x;
S->top++;
return 1;
}
}
/*取出顺序堆栈S的栈顶数据元素值由参数d带回,出栈成功则返回1,否则返回0*/
int StackPop(SeqStack *S , DataType *d)
{
if(S->top <= 0)
{
printf("堆栈已空无数据元素出栈!\n");
return 0;
}
else
{
S->top--;
*d = S->stack[S->top];
return 1;
}
}
/*取顺序堆栈S的当前栈顶数据元素值由参数d带回,成功则返回1,否则返回0*/
int StackTop(SeqStack *S , DataType *d)
{
if(S->top <= 0)
{
printf("堆栈已空!\n");
return 0;
}
else
{
*d = S->stack[S->top - 1];
return 1;
}
}
void main(void)
{
SeqStack myStack;
int i , x;
StackInitiate(&myStack); /*初始化*/
for(i = 0 ; i< 10 ; i++)
StackPush(&myStack , i + 1); /*入栈*/
StackTop(&myStack , &x); /*取栈顶元素*/
printf("当前栈顶数据元素为: %d\n" , x);
printf("依次出栈的数据元素序列如下: \n");
while(StackNotEmpty(&myStack))
{
StackPop(&myStack , &x); /*出栈*/
printf("%d " , x);
}
printf("\n");
}
/*018数组实现顺序堆栈的基本操作*/
#include <stdio.h>
#define MaxStackSize 100
typedef int DataType;
typedef struct
{
DataType stack[MaxStackSize];
int top;
}SeqStack;
/*初始化顺序堆栈S*/
void StackInitiate(SeqStack *S)
{
S->top = 0;
}
/*判断堆栈S非空否,非空返回1,否则返回0*/
int StackNotEmpty(SeqStack *S)
{
if(S->top <= 0)
return 0;
else
return 1;
}
/*把数据元素值x存入顺序堆栈S中,入栈成功则返回1,否则返回0*/
int StackPush(SeqStack *S , DataType x)
{
if(S->top >= MaxStackSize)
{
printf("堆栈已满无法插入!\n");
return 0;
}
else
{
S->stack[S->top] = x;
S->top++;
return 1;
}
}
/*取出顺序堆栈S的栈顶数据元素值由参数d带回,出栈成功则返回1,否则返回0*/
int StackPop(SeqStack *S , DataType *d)
{
if(S->top <= 0)
{
printf("堆栈已空无数据元素出栈!\n");
return 0;
}
else
{
S->top--;
*d = S->stack[S->top];
return 1;
}
}
/*取顺序堆栈S的当前栈顶数据元素值由参数d带回,成功则返回1,否则返回0*/
int StackTop(SeqStack *S , DataType *d)
{
if(S->top <= 0)
{
printf("堆栈已空!\n");
return 0;
}
else
{
*d = S->stack[S->top - 1];
return 1;
}
}
void main(void)
{
SeqStack myStack;
int i , x;
StackInitiate(&myStack); /*初始化*/
for(i = 0 ; i< 10 ; i++)
StackPush(&myStack , i + 1); /*入栈*/
StackTop(&myStack , &x); /*取栈顶元素*/
printf("当前栈顶数据元素为: %d\n" , x);
printf("依次出栈的数据元素序列如下: \n");
while(StackNotEmpty(&myStack))
{
StackPop(&myStack , &x); /*出栈*/
printf("%d " , x);
}
printf("\n");
}
相关文章推荐
- 堆栈的基本操作(用数组实现)
- 实现基于静态数组的顺序表的以下基本操作(进阶部分)
- linux下使用vim实现基于静态数组的顺序表的一些基本操作
- 实现基于静态数组的顺序表的以下基本操作:
- 实现基于静态数组的顺序表的以下基本操作:
- 静态数组顺序表的基本操作实现
- 实现基于静态数组的顺序表的以下基本操作:
- 顺序栈的基本操作实现
- 顺序表的基本操作实现
- 顺序表的基本操作——C++实现
- 顺序队列(循环队列)基本操作实现 C语言
- 顺序表的基本操作(C语言实现)
- 顺序表类的实现和基本操作
- C语言数组实现栈的基本操作,并利用O(1)求出栈中最小元素
- 顺序栈的基本操作实现
- 利用顺序结构实现线性表的基本操作
- 实验三:栈和队列的基本操作实现及其应用——顺序栈
- c语言实现顺序表的基本操作
- 线性表的基本操作实现及其应用之顺序表的建立与操作实现
- 数据结构-顺序线性表基本操作实现