1 #include <stdio.h>
2 #include <stdlib.h>
3 #define STACK_SIZE 100
4 typedef char TYPE;
5 typedef struct Node* pNode;
6 typedef struct Node node;
7 typedef pNode Stack;
8 //char buffer[100];
9 struct Node
10 {
11 TYPE data;
12 struct Node* next;
13 };
14 int isEmpty(Stack s);
15 void Pop(Stack s);
16 void Push(Stack s,TYPE element);
17 TYPE Top_of_stack(Stack s);
18 Stack CreatStack();
19 void makeEmpty(Stack s);
20
21 Stack CreatStack()
22 {
23 Stack s=(Stack)malloc(sizeof(node));
24 s->next=NULL;
25 makeEmpty(s);
26 return s;
27 }
28 void makeEmpty(Stack s)
29 {
30 if(s==NULL)
31 printf("you need creat a stack at first");
32 while(!isEmpty(s))
33 Pop(s);
34 }
35 int isEmpty(Stack s)
36 {
37 return s->next==NULL;
38 }
39 void Pop(Stack s)
40 {
41 if(isEmpty(s))
42 printf("Stack is empty");
43 else
44 {
45 pNode temp=s->next;
46 s->next=s->next->next;
47 free(temp);
48 }
49
50 }
51 void Push(Stack s,TYPE element)
52 {
53 pNode temp=(Stack)malloc(sizeof(node));
54 if(temp)
55 {
56 temp->data=element;
57 temp->next=s->next;
58 s->next=temp;
59 }
60 }
61 TYPE Top_of_stack(Stack s)
62 {
63 if(isEmpty(s))
64 {
65 printf("Stack is empty");
66 return 0;
67 }
68 else
69 return s->next->data;
70 }
71
72 int main()
73 {
74 Stack s =CreatStack();
75 makeEmpty(s);
76 Push(s,'c');
77 Push(s,'d');
78 Push(s,'e');
79 while(!isEmpty(s))
80 {
81 printf("%c",Top_of_stack(s));
82 Pop(s);
83 }
84
85 return 0;
86 }