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 }
栈_顺序表示
一颗平常心,踏踏实实,平静对待一切