【小白成长撸】--顺序栈(C语言版)

 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 //和一些书籍,开始我用的双指针,因为我认为修改指针的内容,就应该在子函数中修改指针的指针,也就是指针的地址,但会出现错误。
原文地址:https://www.cnblogs.com/zpc-uestc/p/5815471.html