思维导图
手动封装一个顺序栈类(数据元素为整形),要求私有成员属性:堆区空间的指针,用于存放数据,和一个指向栈顶元素的变量
/*
---------------------------------
@author:YoungZorn
created on 2023/7/18 17:18.
---------------------------------
*/
#include<iostream>
using namespace std;
class my_stack {
private:
int *ptr; //执行堆区空间,栈首地址(数组首地址)
int top; //记录栈顶元素
public:
//构造函数
my_stack() : ptr(new int[10]), top(-1) {}
//析构函数
~my_stack() { delete[] ptr; }
//判空函数
bool isEmpty() {
if (top == -1 || ptr == nullptr) {
return true;
} else {
return false;
}
}
//判满函数
bool isFull() {
if (top >= 9) {
return true;
} else {
return false;
}
}
//入栈函数
bool push(int num) {
if (isFull()) {
cout << "Full stack" << endl;
return false;
}
ptr[++top] = num;
return true;
}
//出栈函数
bool pop() {
if (isEmpty()) {
return false;
}
top--;
return true;
}
//遍历栈
void output() {
if (isEmpty()) {
cout << "Empty stack" << endl;
return;
}
for (int i = 0; i <= top; i++) {
cout << ptr[i] << " ";
}
cout << endl;
}
//获取栈顶元素的引用
int &getTop(){
if (isEmpty()){
static int ref = -1;
return ref;
}
return ptr[top];
}
};
int main() {
my_stack stack1;
stack1.push(1);
stack1.push(2);
stack1.push(3);
stack1.output();
stack1.pop();
stack1.output();
cout<<"top: "<<stack1.getTop()<<endl;
return 0;
}
运行效果图 如下