栈_顺序表示

 1 #include "stdio.h"
 2 #include "stdlib.h"
 3 typedef int DataType;
 4 
 5 typedef struct mystack
 6 {
 7     //数组最大长度
 8     int MAXN;
 9     //指定栈顶位置
10     int index;
11     DataType *element;
12 
13 }*MyStack, Stack;
14 
15 
16 //创建一个空栈
17 MyStack createStack(int num)
18 {
19     MyStack stack = NULL;
20     stack = malloc(sizeof(Stack));
21     if(stack != NULL)
22     {
23         stack->element = malloc(sizeof(DataType) * num);
24         if(stack ->element != NULL)
25         {
26             stack ->MAXN = num;
27             stack ->index = -1;
28         }
29     }
30     return stack;
31 }
32 
33 //判断栈是否为空
34 int isEmptyStack(MyStack stack)
35 {
36     return stack ->index == -1;
37 }
38 
39 //元素入栈,如果栈已经满则返回0,否则返回1
40 int push(MyStack stack, DataType x)
41 {
42     int index = stack ->index + 1;
43     if(index >= stack ->MAXN)
44         return 0;
45     else
46     {
47         stack ->element[index] = x;
48         stack ->index = index;    
49         return 1;
50     }
51 }
52 
53 //元素出栈,如果栈已经为空返回0,否则返回1
54 int pop(MyStack stack)
55 {
56     if(isEmptyStack(stack))
57         return 0;
58     else
59     {
60         stack ->index--;
61         return 1;
62     }
63 }
64 
65 //取栈顶元素
66 DataType top(MyStack stack)
67 {
68     if(!isEmptyStack(stack))
69         return stack ->element[stack ->index];
70     return -1;
71 }
72 
73 int main()
74 {
75     int len, *in, i;
76     MyStack stack;
77     printf("创建栈的大小:");
78     scanf("%d", &len);
79     stack = createStack(len);
80     in = malloc(sizeof(int) * len);
81     for(i = 0; i<len; i++)
82     {
83         printf("输入进栈的数:");
84         scanf("%d", &in[i]);
85         push(stack, in[i]);
86     }
87     printf("出栈顺序:");
88     for(i = 0; i < len; i++)
89     {
90         printf("%d ",top(stack));
91         pop(stack);
92     }
93     printf("\n");
94 }
原文地址:https://www.cnblogs.com/hanyuan/p/stack.html