顺序栈的基本操作
Posted wy0526
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序栈的基本操作相关的知识,希望对你有一定的参考价值。
1 #include <stdio.h> 2 #define StackSize 100 3 typedef int DataType; 4 typedef struct{ 5 DataType data[StackSize]; 6 int top; 7 }SeqStack; 8 9 void InitStack(SeqStack * S); 10 void Push(SeqStack *S,DataType x); 11 int Pop(SeqStack * S,DataType * ptr); 12 int GetTop(SeqStack * S,DataType*ptr); 13 int Empty(SeqStack * S); 14 int Print(SeqStack * S); 15 16 int main(){ 17 DataType x; 18 SeqStack S; 19 InitStack(&S); 20 printf("对5和10执行入栈操作: "); 21 Push(&S,15); 22 Print(&S); 23 Push(&S,10); 24 Print(&S); 25 if(GetTop(&S,&x)==1) 26 printf("当前栈顶元素为:%d ",x); 27 if(Pop(&S,&x)==1) 28 printf("执行一次出栈操作,删除元素:%d ",x); 29 if(GetTop(&S,&x)==1){ 30 printf("当前栈顶元素为:%d ",x); 31 } 32 printf("请输入待入栈元素:"); 33 scanf("%d",&x); 34 Push(&S,x); 35 if(Empty(&S)==1) 36 printf("栈为空 "); 37 else 38 printf("栈非空 "); 39 return 0; 40 } 41 42 void InitStack(SeqStack * S){ 43 S->top=-1; 44 printf("初始化成功! "); 45 } 46 void Push(SeqStack * S,DataType x){ 47 if(S->top==StackSize-1){ 48 printf("上溢错误,插入失败 "); 49 } 50 S->data[++S->top]=x; 51 printf("入栈成功! "); 52 } 53 int Pop(SeqStack * S,DataType * ptr){ 54 if(S->top==-1){ 55 printf("下溢错误,删除失败 "); 56 return 0; 57 } 58 *ptr = S->data[S->top--]; 59 return *ptr; 60 } 61 int GetTop(SeqStack * S,DataType*ptr){ 62 if(S->top==-1){ 63 printf("下溢错误,取栈顶失败 "); 64 return 0; 65 } 66 *ptr = S->data[S->top]; 67 return 1; 68 } 69 int Empty(SeqStack * S){ 70 if(S->top==-1) 71 return 1; 72 else 73 return 0; 74 } 75 int Print(SeqStack * S){ 76 printf("栈内元素: "); 77 for(int i=0;i<=S->top;i++){ 78 printf("%d ",S->data[i]); 79 } 80 printf(" "); 81 }
以上是关于顺序栈的基本操作的主要内容,如果未能解决你的问题,请参考以下文章
C/C++数据结构-完整代码受限线性表:栈(栈的顺序存储,栈的链式存储,就近匹配,中缀表达式和后缀表达式)