你好

栈的简单实现

 

  •   可以实现先进后出的结构

  分类

    静态栈:线性表类似的,连续存储

    动态栈:链式栈,可分散存储

 

top指针指向最上面元素的上一个位置

空栈:top指针==bottom指针

 1 #include <iostream>
 2 using namespace std;
 3 
 4 typedef struct stack
 5 {    
 6     int* top, *base;
 7 }stack;
 8 
 9 void initstack(stack& s)
10 {    
11     s.base = (int*)malloc(sizeof(int));
12     s.top = s.base;
13 }
14 
15 void push(stack& s, int e) //入栈
16 {
17     *(s.top++) = e;
18 }
19 
20 void pop(stack& s) 
21 {    
22     if(s.top!=s.base)
23     s.top--;
24     else
25     {
26         printf("栈已空");
27     }
28 }
29 
30 bool isempty(stack s)
31 {
32     return s.base == s.top;
33 }
34 
35 int gettop(stack s)
36 {    
37     return *(--s.top);
38 }
39 
40 void travel(stack s)
41 {
42     while (s.base != s.top)
43         printf("%d\n", *(--s.top));
44 }
45 
46 int main()
47 {
48     stack s;
49     initstack(s);
50     push(s, 1);
51     push(s, 2);
52     push(s, 3);
53     push(s, 4);
54     push(s, 5);
55     travel(s);
56     pop(s);
57     travel(s);
58     cout<<isempty(s)<<endl;
59     cout << gettop(s)<<endl;
60     pop(s);
61     pop(s);
62     pop(s);
63     pop(s);
64     cout << isempty(s) << endl;
65 }

 

posted @ 2020-10-07 21:20  S_nA_tCH!  阅读(135)  评论(0)    收藏  举报