1 #include<stdio.h>
2 #include<stdlib.h>
3
4 typedef struct SqStack {
5 int *base;
6 int *top;
7 int stacksize;
8 }SqStack;
9
10 //创建顺序栈
11 SqStack InitStack() {
12 SqStack S;
13 S.base = (int*)malloc(10*sizeof(int));
14 if(!S.base)
15 exit(0);
16 S.top = S.base;
17 S.stacksize = 10 ;
18 return S;
19 }
20
21 //设置为空栈
22 int ClearStack(SqStack &S) {
23 S.top = S.base;
24 return 0;
25 }
26
27 //将元素入栈
28 int Push(SqStack &S , int e) {
29
30 if(S.top - S.base >= S.stacksize)
31 {
32 S.base = (int *)realloc(S.base , (S.stacksize + S.stacksize/2)*sizeof(int));
33 if(!S.base)
34 exit(0);
35 S.top = S.base + S.stacksize ;
36 S.stacksize += S.stacksize/2 ;
37 }
38 *S.top++ = e;
39 }
40
41 //弹出栈顶元素
42 int Pop(SqStack &S) {
43 if(S.base == S.top)
44 return 0;
45 return *--S.top;
46 }
47
48 //取出栈顶元素
49 int GetTop(SqStack &S) {
50 if(S.base == S.top)
51 return 0;
52 return *(S.top-1);
53 }
54
55 //将栈内元素倒置
56 void StackTraverse(SqStack &S) {
57 SqStack S1 = InitStack();
58 while(S.base != S.top)
59 Push(S1 , Pop(S));
60 S = S1 ;
61 }
62
63 //输出所有元素
64 int PrintfStack(SqStack &S) {
65 for( ; ; ) {
66 if(S.base == S.top)
67 return 0;
68 printf("%d" , Pop(S));
69 }
70 }
71 int main() {
72 SqStack S ;
73 S = InitStack();
74 int n = 0 ;
75 for(int i = 0 ; i < 2 ; i++)
76 {
77 scanf("%d" , &n);
78 Push(S , n);
79 }
80 StackTraverse(S);
81 PrintfStack(S);
82 }