顺序栈的初始化入栈出栈以及打印栈的信息

Posted ITCoderW

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序栈的初始化入栈出栈以及打印栈的信息相关的知识,希望对你有一定的参考价值。

使用的开发工具CLion

CLion 2017.2.1

Build #CL-172.3544.40, built on August 2, 2017
Licensed to CLion Evaluator
Expiration date: September 15, 2017
JRE: 1.8.0_152-release-915-b6 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.12.4

 

  1 #include <iostream>
  2 using namespace std;
  3 
  4 #define  maxSize 1000
  5 #define WWStr(str) #str
  6 #define WWLine "-------------"
  7 
  8 /*
  9  * 目前参考内容
 10  * 严蔚敏版数据结构 数据结构高分笔记
 11  */
 12 
 13 //顺序栈
 14 typedef  struct {
 15     int data[maxSize];
 16     int top;
 17 }SqStack;
 18 
 19 
 20 //栈的初始化
 21 void initSqStack(SqStack &st);
 22 //输出顺序栈的内容
 23 void printSqStack(SqStack st);
 24 //入栈操作
 25 int pushSqStack(SqStack &st,int x);
 26 
 27 //出栈操作
 28 int popSqStack(SqStack &st,int &x);
 29 
 30 int main() {
 31 
 32     std::cout << "Hello, World!" << std::endl;
 33 
 34     SqStack st;
 35 
 36     initSqStack(st);
 37 
 38     printSqStack(st);
 39     pushSqStack(st,1);
 40     pushSqStack(st,2);
 41     pushSqStack(st,3);
 42     printSqStack(st);
 43     
 44     int topElement;
 45 
 46     popSqStack(st,topElement);
 47     popSqStack(st,topElement);
 48     cout<<"刚刚出栈的栈顶元素"<<topElement<<endl;
 49     popSqStack(st,topElement);
 50     printSqStack(st);
 51     popSqStack(st,topElement);
 52     printSqStack(st);
 53 
 54     cout<<WWStr(str)<<WWLine<<WWStr(str)<<WWStr(-------);
 55 
 56 
 57     return 0;
 58 }
 59 
 60 #pragma mark - 顺序栈的初始化操作
 61 void initSqStack(SqStack &st){
 62         st.top = -1;
 63 }
 64 
 65 #pragma mark - 输出顺序栈的内容
 66 void printSqStack(SqStack st){
 67     cout<<"-------输出顺序栈的信息: ----地址:"<<&st<<endl;
 68     for (int i = 0; i <= st.top; ++i) {
 69         cout<<"顺序栈st下标"<<i<<"元素"<<st.data[i]<<endl;
 70     }
 71 
 72 }
 73 
 74 #pragma mark - 入栈操作
 75 int pushSqStack(SqStack &st,int x){
 76     cout<<"-----入栈操作-----"<<"入栈元素"<<x<<endl;
 77     if (st.top == maxSize){
 78         cout<<"栈为满,不能入栈";
 79         return 0;
 80     }
 81     ++st.top;
 82     st.data[st.top] = x;
 83     return 1;
 84 }
 85 
 86 #pragma mark - 出栈操作
 87 int popSqStack(SqStack &st,int &x){
 88     if (st.top == -1) {
 89         cout<<"栈为空,不能出栈"<<endl;
 90         return 0;
 91     }
 92 
 93     -- st.top;
 94     x = st.data[st.top];
 95     cout<<"-----出栈操作----"<<"出栈元素"<<x<<endl;
 96     return  1;
 97 
 98 }
 99 
100 #pragma mark - 注意事项
101 void notices(){
102     /***
103      * 入栈 出栈要有引用参数指向栈 才能够真的改变栈的值
104      * 出栈还要有引用参数指向出栈的元素 以记录下来刚刚出栈的元素
105      */
106 }

输出的内容如下:

Hello, World!
-------输出顺序栈的信息: ----地址:0x7fff5d6039d0
-----入栈操作-----入栈元素1
-----入栈操作-----入栈元素2
-----入栈操作-----入栈元素3
-------输出顺序栈的信息: ----地址:0x7fff5d6039d0
顺序栈st下标0元素1
顺序栈st下标1元素2
顺序栈st下标2元素3
-----出栈操作----出栈元素2
-----出栈操作----出栈元素1
刚刚出栈的栈顶元素1
-----出栈操作----出栈元素0
-------输出顺序栈的信息: ----地址:0x7fff5d6039d0
栈为空,不能出栈
-------输出顺序栈的信息: ----地址:0x7fff5d6039d0
str-------------str-------



如有问题,敬请指正

 

以上是关于顺序栈的初始化入栈出栈以及打印栈的信息的主要内容,如果未能解决你的问题,请参考以下文章

数据结构之栈以及栈的基本操作

JAVA 方法的入栈出栈问题

链栈算法

如何理解“入栈、读栈、出栈”

关于汇编语言问题,入栈出栈啥用

[数据结构]——栈的实现(初始化销毁入栈出栈记录数据总数判断栈是否为空获取栈顶数据)