栈的顺序存储及其基本操作
来源:互联网 发布:工程数据类别 编辑:程序博客网 时间:2024/06/05 11:23
#include <stdio.h>#include <stdlib.h>#define M 10typedef struct //定义一个顺序栈{ char data[M]; int top;}SqStack;void InitStack(SqStack &st)//创建一个栈{ st.top=-1;}int PushStack(SqStack &st, char x)//进栈操作{ if(st.top==M-1) return 0; else { st.top++; st.data[st.top]=x; return 1; }}int PopStack(SqStack &st,char &x) //出栈操作{ if(st.top==-1) return 0; else { x=st.data[st.top]; st.top--; return 1; }}int GetTop(SqStack st,char &x) //取栈顶元素{ if(st.top==-1) return 0; else { x=st.data[st.top]; return 1; }}int StackEmpty(SqStack st) //判断栈空{ if(st.top==-1) return 1; else return 0;}int main(){ SqStack st; char e; InitStack(st); printf("栈%s\n",(StackEmpty(st)==1?"空":"不空")); printf("a进栈\n");PushStack(st,'a'); printf("b进栈\n");PushStack(st,'b'); printf("c进栈\n");PushStack(st,'c'); printf("d进栈\n");PushStack(st,'d'); printf("栈%s",(StackEmpty(st)==1?"空":"不空")); GetTop(st,e); printf("栈顶元素:%c\n",e); printf("出栈次序:"); while(!StackEmpty(st)) { PopStack(st,e); printf("%c ",e); } printf("\n"); return 0;}
输入元素后输出