1 // 顺序栈.cpp : 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"//test1.0--栈表仅限Int类型
5 #include <stdio.h>
6
7 #define true 1
8 #define false 0
9
10 typedef struct stack_type
11 {
12 int stack[100];//最大容纳100个元素
13 int top;
14 }stacktype;
15
16 int pushes(stacktype *s, int x);//压入栈
17 int pops(stacktype *s);//删除栈
18 void initiatest(stacktype *s);//初始化
19
20 int main(void)
21 {
22 stacktype L;
23 stacktype *sta = &L;//失败过,如果没有L这个元素,直接stacktype *sta,编译器会报“未初始化的局部变量“sta””
24 int i, x,m;
25
26 initiatest(sta);
27
28 i = 0;
29
30 for (;;i++)
31 {
32 scanf_s("%d", &x);
33
34 if (x == -2)
35 {
36 break;
37 }
38
39 pushes(sta, x);
40 }
41
42 for (m = 0; m < i; m++)
43 {
44 printf_s("%d ", sta->stack[m]);
45 }
46
47 return 0;
48 }
49
50 int pushes(stacktype *s, int x)
51 {
52 if (s->top >= 99)
53 {
54 return (false);
55 }
56 else
57 {
58 s->top++;
59 s->stack[s->top] = x;
60 return(true);
61 }
62 }
63
64 int pops(stacktype *s)
65 {
66 if (s->top < 0)
67 {
68 return (false);
69 }
70 else
71 {
72 s->top--;
73 return (s->stack[s->top + 1]);
74 }
75 }
76
77 void initiatest(stacktype *s)
78 {
79 s->top = -1;
80 return ;
81 }
82
83 //参考:http://www.cnblogs.com/yuxi/archive/2007/02/10/647076.html
84 //和一些书籍,开始我用的双指针,因为我认为修改指针的内容,就应该在子函数中修改指针的指针,也就是指针的地址,但会出现错误。