1 #include <stdio.h>
2 #include <stdlib.h>
3 typedef int datatype;
4 #define N 64
5 typedef struct stack
6 {
7 int data[N];
8 int top;
9 }stack_list;
10 stack_list * create_stack();
11 int stack_insert(stack_list * L,datatype value);
12 int stack_full(stack_list * L);
13 void stack_show(stack_list *L);
14 int stack_po(stack_list * L,datatype * value);
15 int stack_empty(stack_list *L );
16 datatype stack_top(stack_list * L);
17 void stack_clear(stack_list * L);
18 void stack_free(stack_list * L);
19 int main(int argc, const char *argv[])
20 {
21 datatype value;
22 stack_list *L = create_stack();
23 if(NULL == L)
24 {
25 printf("调用函数失败\n");
26 return -1;
27 }
28 stack_insert(L,1);
29 stack_insert(L,2);
30 stack_insert(L,3);
31 stack_insert(L,4);
32 stack_insert(L,5);
33 stack_show(L);
34 stack_pop(L,&value);
35 printf("%d\n",value);
36 printf("top =%d \n",stack_top(L));
37 stack_clear(L);
38 stack_free(L);
39 return 0;
40 }
41
42 stack_list * create_stack()
43 {
44 stack_list * L = (stack_list * )malloc(sizeof(stack_list));
45 if(NULL == L)
46 {
47 printf("内存空间开辟失败\n");
48 return NULL;
49 }
50 L->top = -1;
51 return L;
52 }
53
54 int stack_insert(stack_list * L,datatype value)
55 {
56 if(stack_full(L))
57 {
58 printf("栈空间已满\n");
59 return -1;
60 }
61 L->top++;
62 L->data[L->top] = value;
63 return 0;
64 }
65 int stack_full(stack_list * L)
66 {
67 return L->top >= N-1 ?1:0;
68 }
69
70 void stack_show(stack_list *L)
71 {
72 int i;
73 for(i = 0; i<=L->top; i++)
74 {
75 printf("%d ",L->data[i]);
76 }
77 printf("\n");
78 }
79
80 int stack_pop(stack_list * L,datatype * value)
81 {
82 if(stack_empty(L))
83 {
84 printf("栈已经为空,无法继续删除\n");
85 return -1;
86 }
87 *value = L->data[L->top];
88 L->top--;
89 return 0;
90 }
91
92 int stack_empty(stack_list *L )
93 {
94 return L->top < 0?1:0;
95 }
96
97 void stack_free(stack_list * L);
98 datatype stack_top(stack_list * L)
99 {
100 return L->data[L->top];
101 }
102 void stack_clear(stack_list * L)
103 {
104 L->top = -1;
105 }
106 void stack_free(stack_list * L)
107 {
108 free(L);
109 L = NULL;
110 }