楼主你好,栈的基本运算有6种
(1)InitStack(S):构造一个空栈
(2)StackEmpty(S):判断栈空,空返回true,否则为false
(3)StackFull(S):判断栈满,满返回true,否则为false
(4)Push(S,x):若栈不满将x插入到栈顶
(5)Pop(S):退栈,若栈非空,将栈顶元素删去,并返回该元素.
(6)StackTop(S):取栈顶元素。若栈非空,返回栈顶元素,但不改变栈的状态。
#include
#define StackSize 10
typedef int DataType;
typedef struct{
DataType data[StackSize];
int top;
}SeqStack;
void InitStack(SeqStack *S){ //初始化栈
S->top=-1;
}
int StackEmpty(SeqStack *S){//判栈空
return S->top==-1;
}
int StackFull(SeqStack *S){//判栈满
return S->top==StackSize-1;
}
void Push(SeqStack *S,DataType x){//进栈
if(StackFull(S)){
printf("Stack overflow!");
exit(1);
}
S->data[++S->top]=x;
}
DataType Pop(SeqStack *S){//出栈
if(StackEmpty(S)){
printf("Stack underflow!");
exit(1);
}
return S->data[S->top--];
}
DataType StackTop(SeqStack *S){//取栈顶元素
if(StackEmpty(S)){
printf("Stack is empty");
exit(1);
}
return S->data[S->top];
}
void main(){
int i;
SeqStack S;
InitStack(&S);
for(i=0;i
for(i=StackSize-1;i>=0;i--)
printf("%d ",Pop(&S,i));
}
设计要点:
(1):建立一个结构体作为顺序栈的类型;
(2):理解栈的6种操作;
(3):避免上溢和下溢的发生。
希望能够帮助到你。