#include <stdio.h>#include <malloc.h>#define MaxSize 100//顺序栈的存储结构typedef char ElemType;typedef struct{ ElemType data[MaxSize]; int top; //栈顶指针} SqStack;//初始化栈void InitStack(SqStack *&s){ s=(SqStack *)malloc(sizeof(SqStack)); s->top=-1;//栈顶指针置为-1}//销毁栈void DestroyStack(SqStack *&s){ free(s);}//判断栈是够为空int StackEmpty(SqStack *s){ return (s->top==-1);}//进栈bool Push(SqStack *&s,ElemType e){ if(s->top==MaxSize-1)//判断栈是否栈满防止溢出 return false; s->top++;//栈顶指针增加一 s->data[s->top]=e; return true;}//出栈bool Pop(SqStack *&s,ElemType &e){ if(s->top==-1)//栈为空的情况,即栈下溢出 return false; e=s->data[s->top]; s->top--; return true;}//取栈顶元素bool GetTop(SqStack *s,ElemType &e){ if(s->top==-1)//栈为空的情况,即栈下溢出 return false; e=s->data[s->top]; return true;}int main(){ ElemType e; SqStack *s; PRintf("栈s的基本运算如下:/n"); printf(" (1)初始化栈s/n"); InitStack(s); printf(" (2)栈为%s/n",(StackEmpty(s)?"空":"非空")); printf(" (3)依次进栈元素a,b,c,d,e/n"); Push(s,'a'); Push(s,'b'); Push(s,'c'); Push(s,'d'); Push(s,'e'); printf(" (4)栈为%s/n",(StackEmpty(s)?"空":"非空")); printf(" (5)出栈序列:"); while (!StackEmpty(s)) { Pop(s,e); printf("%c ",e); } printf("/n"); printf(" (6)栈为%s/n",(StackEmpty(s)?"空":"非空")); printf(" (7)释放栈/n"); DestroyStack(s); return 0;}运行结果:
新闻热点
疑难解答