顺序栈的初始化 入栈 出栈以及 打印栈的信息
使用的开发工具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-------
如有问题,敬请指正
我会不定期分享 iOS 相关技术文章