链栈的基本操作,前两项是正确的,第三步进栈后,链栈为什么还显示空栈,第三第四步哪里有问题吗?
```c
#include<stdio.h>
#include<malloc.h>
typedef char ElemType;
typedef struct linknode
{
char data;
struct linknode *next;
}LinkStNode;
void InitStack(LinkStNode *&s)
{
s=(LinkStNode *)malloc(sizeof(LinkStNode));
s->next=NULL;
}
bool StackEmpty(LinkStNode *s)
{
return(s->next==NULL);
}
bool Push(LinkStNode *&s,char e)
{
if(s->next==NULL)
return false;
LinkStNode *p;
p=(LinkStNode *)malloc(sizeof(LinkStNode));
p->data=e;
p->next=s->next;
s->next=p;
return true;
}
int main()
{
char e;
char a[5]={'a','b','c','d','e'};
LinkStNode *s;
printf("1.初始化栈\n");
InitStack(s);
StackEmpty(s);
printf("2.栈是%s栈\n",!StackEmpty(s)?"非空":"空");
for(int i=0;i<5;i++)
{
Push(s,a[i]);
}
printf("3.依次进栈abcde\n");
StackEmpty(s);
printf("4.栈是%s栈\n",!StackEmpty(s)?"非空":"空");
}
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/116180278176140.png "#left")