#include <stdio.h>
#include <stdlib.h>
#define DataType int
typedef struct StackNode
{
DataType Data;
struct StsckNode *Next;
}SlStackType;
SlStackType *InitSlStack( );
int IsEmpty(SlStackType *top);
int PushLStack(SlStackType *top,DataType x);
int PopLStack(SlStackType *top,DataType x);
SlStackType *InitSlStack()
{
SlStackType *top;
top==(SlStackType *)malloc(sizeof(SlStackType));
if(top)
{
top->Next=NULL;
return top;
}
else
{
printf("Failed to apply for the memory,program ends.\n");
exit(0);
}
}
int IsEmpty(SlStackType *top)
{
return(top->Next==NULL);
}
int PushLStack(SlStackType *top,DataType x)
{
SlStackType *p;
p=(SlStackType *)malloc(sizeof(SlStackType));
if(p)
{
p->Data=x;
printf("The element that enter the stack: %d\n",p->Data);
p->Next=top->Next;
top->Next=p;
return 0;
}
else
{
printf("Failed to apply for the memory,program ends.\n");
exit(0);
}
}
int PopLStack(SlStackType *top,DataType x)
{
SlStackType *p=NULL;
if(IsEmpty(top))
{
printf("Empty stack,ends the program.\n");
free(top);
top=NULL;
return 0;
}
else
{
p=top->Next;
top->Next=p->Next;
printf("The element that out the stack: %d\n",p->Data);
free(p);
p=NULL;
}
}
int main(void)
{
SlStackType *top=NULL;
DataType x=0;
top=InitSlStack( );
PushLStack(top,1);
PushLStack(top,2);
PushLStack(top,3);
PushLStack(top,4);
printf("\n");
PopLStack(top,x);
PopLStack(top,x);
PopLStack(top,x);
return 0;
}