//链栈是运算受限的单链表,只能在链表头部进行操作
typedef struct stackNode{
SElemType data;
struct stackNode *next;
}stackNode,*Linkstack;
Linkstack;
//链栈的初始化
void Initstack(Linkstack &S){
S =NULL; //构造一个空栈,栈顶指针置为空
}
//判断链栈是否为空
Status stackEmpty(linkstack S){
if(S == MULL) return TRUE;
else return FALSE;
}
//链栈的入栈
Status Push(Linkstack &s,SELemType e){
p = new stackNode //生成新节点P
P-> data = e;//将新节点数据域置为e
p ->next = s; //将新节点插入栈顶
s = p; //修改栈顶指针
return OK;
}
//链栈的出栈
Status Pop(Linkstack &s ,SELemType &e){
if(s=NULL) return ERROR;
e = s->data;
p=s;
s=s ->next;
delete p;
return OK;
}
//取栈顶元素
SELemType GetTop(Linkstack S){
if(S!=NULL)
return S->data;
}