#include <stdio.h>
#include "stdlib.h"
#define MaxSize 100
typedef char ElemType;//元素类型
typedef struct
{
ElemType elem[MaxSize];
int top;
}SeqStack;//顺序栈的类型定义
void InitStack(SeqStack *&S)//初始化栈
{
S=(SeqStack *)malloc(sizeof(SeqStack));
S->top=-1;
}
void DestroyStack(SeqStack *&S)//销毁栈
{
free(S);
}
bool StackEmpty(SeqStack *S)//判断栈是否为空
{
return S->top==-1;
}
bool Push(SeqStack *&S,ElemType e)//进栈
{
if(S->top==MaxSize-1)
return false;
S->top++;
S->elem[S->top]=e;
return true;
}
bool Pop(SeqStack *&S,ElemType &e)//出栈
{
if(S->top==-1)
return false;
e=S->elem[S->top];
S->top--;
return true;
}
bool GetTop(SeqStack *S,ElemType e)//获取栈顶元素
{
if(S->top==-1)
return false;
e=S->elem[S->top];
return true;
}
int main()
{
SeqStack *S;
InitStack(S);
Push(S,'a');
Push(S,'b');
Push(S,'c');
Push(S,'d');
printf("栈为%s\n",StackEmpty(S)?"空":"非空");
ElemType e;
/*Pop(S,e);
printf("%c出栈\n",e);
Pop(S,e);
printf("%c出栈\n",e);
Pop(S,e);
printf("%c出栈\n",e);
Pop(S,e);
printf("%c出栈\n",e); */
while(!StackEmpty(S))
{
Pop(S,e);
printf("%c出栈\n",e);
}
printf("栈为%s",StackEmpty(S)?"空":"非空");
}