链栈
单链表的头插法和从表头删除元素---->可以对应链栈的进栈和出栈操作
定义
typedef struct Linknode{
ElemType data;
struct Linknode *next;
}*LiStack;
//进栈
bool Push(LiStack &S,int x){
//不带头节点
LinkNode *p;
p=(LinkNode *)malloc(sizeof(LinkNode));
p->data=x;
if(S==NULL){
S=p;
}
else{
p->next=S;
S=p;
}
return true;
}
//出栈(带元素)
bool Pop(LiStack &S,int &x){
//判断是否为空
if(S==NULL)
return false;
//栈顶元素出栈
LinkNode *p=S;
x=p->data;
S=p->next;
free(p);
return true;
}
//获取栈顶元素
int GetTop(LiStack S){
if(S==NULL){
printf("EMPTY!\n");
exit(-1);
}
return S->data;
}