实现一个所定义栈的初始化空栈、判栈空、判栈满、取栈顶元素、入栈、出栈等基本操作
时间: 2023-09-22 16:09:45 浏览: 89
栈的基本操作的实现
好的,以下是一个基于数组实现的栈的示例代码:
```c++
#include <iostream>
using namespace std;
const int MAX_SIZE = 100; // 栈的最大容量
class Stack {
public:
Stack(); // 构造函数
bool isEmpty(); // 判栈空
bool isFull(); // 判栈满
bool push(int x); // 入栈
bool pop(); // 出栈
int top(); // 取栈顶元素
private:
int data[MAX_SIZE]; // 栈的数据
int topIndex; // 栈顶下标
};
Stack::Stack() {
topIndex = -1; // 初始化栈顶下标为-1
}
bool Stack::isEmpty() {
return topIndex == -1; // 如果栈顶下标为-1,说明栈为空
}
bool Stack::isFull() {
return topIndex == MAX_SIZE - 1; // 如果栈顶下标为MAX_SIZE-1,说明栈已满
}
bool Stack::push(int x) {
if (isFull()) { // 如果栈已满,不能再入栈
return false;
}
topIndex++; // 栈顶下标加1
data[topIndex] = x; // 将元素x入栈
return true;
}
bool Stack::pop() {
if (isEmpty()) { // 如果栈为空,不能出栈
return false;
}
topIndex--; // 栈顶下标减1
return true;
}
int Stack::top() {
if (isEmpty()) { // 如果栈为空,没有栈顶元素
return -1;
}
return data[topIndex]; // 返回栈顶元素的值
}
int main() {
Stack s;
s.push(1);
s.push(2);
s.push(3);
cout << "栈顶元素为:" << s.top() << endl; // 输出3
s.pop();
cout << "栈顶元素为:" << s.top() << endl; // 输出2
s.pop();
cout << "栈顶元素为:" << s.top() << endl; // 输出1
s.pop();
cout << "栈是否为空:" << s.isEmpty() << endl; // 输出1(true)
return 0;
}
```
上述代码中,`Stack` 类定义了栈的基本操作,包括初始化空栈、判栈空、判栈满、入栈、出栈和取栈顶元素。
在 `main` 函数中,我们创建了一个 `Stack` 类型的对象 `s`,并进行了一些基本操作的测试。
阅读全文