c++顺序栈(只用引用不用指针)
顺序栈重点学会判空,判满,取长,初始化栈,进栈操作,出栈操作。注意代码的bool关系要对应。
#include <stdio.h>
#include <iostream>
using namespace std;
#define maxsize 5
struct sqstack {
int data[maxsize];
int top;
};
bool empty_stack(sqstack &q) {
if (q.top == -1) {
return false;
}
return true;
}
bool full_stack(sqstack &q) {
if (q.top + 1 == maxsize) {
return false;
}
return true;
}
int length_stack(sqstack &q) {
return q.top + 1;
}
sqstack init_stack() {
sqstack q = { {'\0'},-1 };
return q;
}
bool add_stack(sqstack &q,int data) {
if (!full_stack(q)) {
return false;
}
q.top++;
q.data[q.top] = data;
return true;
}
bool pop_stack(sqstack &q,int &del_data) {
if (!empty_stack(q)) {
return false;
}
del_data = q.data[q.top];
q.top--;
return true;
}
int main() {
sqstack q = init_stack();
for (int i = 0; full_stack(q); i++) {
add_stack(q, i + 1);
cout << length_stack(q) << endl;
}
cout << "--------------添加完元素的长度---------------" << endl;
cout << length_stack(q) << endl;
cout << "--------------开始出栈-----------------------" << endl;
while(empty_stack(q)) {
int data;
pop_stack(q, data);
cout << data << endl;
}
return 0;
}
运行结果:
![请添加图片描述](https://img-blog.csdnimg.cn/148f5daafb4148c38bf19ea0570448f7.png)