p=lst->next这句话的含义是p为指向头结点之后第一个节点的指针。==NULL译为:没有第一个节点。
链栈的存储结构
typedef int ElemType;
struct LiStack {
ElemType data;
struct LiStack *next;
};
初始化栈的算法
void InitStack(LiStack *&lst) {
lst=(LiStack *)malloc(sizeof(LiStack));
lst->next=NULL;
}
判断栈是否为空的算法
int StackEmpty(LiStack *lst) {
return(lst->next==NULL);
}
进栈的算法
void Push(LiStack *&lst,ElemType x) {
LiStack *p;
p=(LiStack *)malloc(sizeof(LiStack));
p->data=x;
p->next=lst->next;
lst->next=p;
}
出栈的算法
int Pop(LiStack *&lst,ElemType &x) {
LiStack *p;
if(lst->next==NULL)
return 0;
p=lst->next;
x=p->data;
lst->next=p->next;
free(p);
return 1;
}
取栈顶元素的算法
int GetTop(LiStack *&lst,ElemType &x) {
LiStack *p;
if(lst->next==NULL)
return 0;
p=lst->next;
x=p->data;
return 1;
}
暂无评论