一、问题描述
用不带头结点的单链表存储链栈,设计初始化栈、判断栈是否为空、进栈和出栈等相应的算法
二、问题分析
不带头结点的单链表lst为空的条件是lst=NULL,进栈和出栈操作都是在表头进行的
三、问题解答
void initStack(LNode *&lst){//初始化栈
lst=NULL;
}
int isEmptyl(LNode *lst){//判断栈是否为空
if(lst==NULL) return 1;
else return 0;
}
void pushl(LNode *&lst,int x){//进栈
LNode *p;
p=(LNode *)malloc(sizeof(LNode));
p->next=NULL;
p->data=x;
p->next=lst;
lst=p;
}
int popl(LNode *&lst,int &x){//元素出栈
LNode *p;
if(lst==NULL)return 0;//栈空的情况
p=lst;
x=p->data;
lst=p->next;
free(p);
return 1;
}