链栈
typedef struct StackNode{
ElemType data;
struct StackNode *next;
}StackNode,*LinkStack;
初始化
void InitStack(LinkStack &S){
S=NULL;
}
判断链栈是否为空
int StackEmpty(LinkStack S){
if(S=NULL)return 1;
else return 0;
入栈
int Push(LinkStack &S,ElemType e){
p=(LinkStack)malloc(sizeof(StackNode));
if(!p)exit(-2);
p->data=e;
p->next=S;
S=p;
return OK;
}
出栈
int Pop(LinkStack &S,ElemType &e){
if(S=NULL)return ERROR;
e=S->data;
p=S;
S=S->next;
free§;
return OK;
}
取栈顶元素
int GetTop(LinkStack S){
if(S=NULL)exit(1);
else return S->data;
}
栈的应用
1、迷宫游戏
2、表达式计算
3、递归