#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
typedef char elemtype;
typedef struct linknode
{ elemtype data;
struct linknode *next;
}LinkStNode;
void InitStack(LinkStNode *&s)
{ s=(LinkStNode *)malloc(sizeof(LinkStNode));
s->next=Null;
}
bool StackEmpty(s)
{
return(s->next==Null);
}
void Push(LinkStNode *&s,elemtype e)
{ LinkStNode *p;
p=(LinkStnode *)malloc(sizeof(LinkStnode));
p->data=e;
p->next=s->next;
s->next=p;}
}
int Pop(LinkStNode *&s,elemtype &e)
{ LinkStNode *p;
if(s->next ==Null)
return 0;
p=s->next;
e=p->next;
s->next=p->next;
free(p);
return 1;
}
void DestroyStack(LinkStNode *&s)
{ LinkStNode *pre=s,*p=s->next;
while(p!=Null)
{free(pre);
pre=p;
p=pre->next;
}
free(pre);
}
int main()
{ LinkStNode *s;
char a,b,c,d,e;
InitStack(&s);
StackEmpty(s);
Push(&s,a);
Push(&s,b);
Push(&s,c);
Push(&s,d);
Push(&s,e);
StackEmpty(s);
while(!StackEmpty(s))
{ Pop(&s,&e);
printf("%4c,e);
}
StackEmpty(s);
}
源代码如上
功能是 初始化栈 判断栈是否为空 近栈元素abcde 输出栈序列 判断栈s是否非空 释放栈