#include<stdio.h>
#include<stdlib.h>
#ifndef _Stack_h
struct Node;
typedef struct Node *PtyToNode;
typedef PtrToNode Stack;
int IsEmpty(Stack S);
Stack CreatStack(void);
void MakeEmpty(Stack S);
void Push(Element x, Stack s);
ElementType Top(Stack s);
void Pop(Stack s);
#endif
struct Node
{
ElementType Element;
PtrToNode Next;
};
int
IsEmpty(Stack s)
{
return s->Next==NULL;
}
Stack
CreatStack(void)
{
Stack s;
s=(struct *)malloc(sizeof(struct Node));
if(s==NULL)
{ printf("Out of Space !"); exit(1);}
s->Next=NULL;
MakeEmpty(s);
return s;
}
void
MakeEmpty(Stack s)
{
if(s==NULL)
{printf("Must use CreatStack first !"); exit(1);}
while(!IsEmpty(s))
pop(s);
}
void
Push(Element x,Stack s)
{
PtrToNode tmpcell=(Stack s)malloc(sizeof(Node));
if(tmpcell==NULL)
{printf("Out of space !"); exit(1);}
tmpCall->Element=x;
tmpCell->Next=s->Next;
s->Next=tmpcell;
}
ElementType
Top(Stack s)
{
if(IsEmpty(Stack s))
{printf("Empty stack !"); exit(1);}
return s->Next->Element;
}
void
Pop(Stack s)
{
if(IsEmpty(Stack s))
{printf("The stack is empty !"); exit(1);}
Stack firstCell=s->Next;
s->Next=s->Next->Next;
free(firstCell);
}