#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct Stack
{
ElemType data;
struct Stack *next;
}Stack,*LStack;
//初始化一个链栈
int StackInit(LStack *s)
{
*s = NULL;
return 1;
}
//入栈
int StackPush(LStack *s,ElemType e)
{
LStack p;
p = (LStack)malloc(sizeof(Stack));
if(NULL == p)
{
printf("error\n");
return 0;
}
p->data = e;
p->next = *s;
*s = p;
return 1;
}
//出栈
int StackPop(LStack *s,ElemType *e)
{
LStack p;
p = *s;
if(NULL == p)
{
printf("error\n");
return 0;
}
*e = (*s)->data;
*s = (*s)->next;
free(p);
p = NULL;
return 1;
}
//获取栈顶元素
int StackTop(LStack s)
{
if(NULL == s)
{
printf("empty Stack\n");
return 0;
}
printf("TopData="%d\n",s->data);
return 1;
}
//清空栈
int StackClear (LStack *s)
{
ElemType i;
while(*s != NULL)
{
StackPop(s,&i);
}
return 1;
}
void main()
{
ElemType i;
LStack L;//栈顶
StackInit(&L);
StackPush(&L,11);
StackPush(&L,22);
StackPush(&L,33);
StackPush(&L,44);
StackPush(&L,55);
StackPush(&L,66);
StackPop(&L,&i);
printf("%d\n",i);
StackPop(&L,&i);
printf("%d\n",i);
StackPop(&L,&i);
printf("%d\n",i);
StackPop(&L,&i);
printf("%d\n",i);
StackPop(&L,&i);
printf("%d\n",i);
StackPop(&L,&i);
printf("%d\n",i);
}