编写一个程序模拟堆栈,要求能够模拟、入栈、出栈、返回栈顶元素等基本操作。栈中元素可用整数代替。不能使用C++模板库预定义的类型。程序运行中可输入多组入栈、出栈操作,每次操作后展示栈中元素。
时间: 2024-05-10 11:16:31 浏览: 79
c++栈操作实现,堆栈,出栈,取栈顶元素
4星 · 用户满意度95%
以下是使用C++实现堆栈的示例程序:
```c++
#include <iostream>
using namespace std;
// 定义栈的最大容量
const int MAX_SIZE = 100;
// 定义堆栈类
class Stack {
public:
// 构造函数
Stack() {
top = -1;
}
// 入栈操作
void push(int val) {
if (top == MAX_SIZE - 1) {
cout << "Stack Overflow!" << endl;
return;
}
top++;
data[top] = val;
}
// 出栈操作
void pop() {
if (top == -1) {
cout << "Stack Underflow!" << endl;
return;
}
top--;
}
// 返回栈顶元素
int peek() {
if (top == -1) {
cout << "Stack is Empty!" << endl;
return -1;
}
return data[top];
}
// 判断栈是否为空
bool isEmpty() {
return top == -1;
}
// 判断栈是否已满
bool isFull() {
return top == MAX_SIZE - 1;
}
// 输出栈中所有元素
void display() {
if (isEmpty()) {
cout << "Stack is Empty!" << endl;
return;
}
for (int i = top; i >= 0; i--) {
cout << data[i] << " ";
}
cout << endl;
}
private:
int data[MAX_SIZE]; // 存储堆栈元素
int top; // 栈顶指针
};
int main() {
Stack s;
int val;
char op;
do {
cout << "Please input operation: ";
cin >> op;
switch (op) {
case 'i': // 入栈
cout << "Please input value: ";
cin >> val;
s.push(val);
s.display();
break;
case 'o': // 出栈
s.pop();
s.display();
break;
case 'p': // 返回栈顶元素
cout << "Top element is: " << s.peek() << endl;
break;
case 'd': // 输出栈中所有元素
s.display();
break;
case 'q': // 退出程序
break;
default:
cout << "Invalid operation!" << endl;
break;
}
} while (op != 'q');
return 0;
}
```
该程序使用一个int类型的数组data来存储堆栈中的元素,使用一个整数top来记录栈顶指针的位置。程序中提供了入栈、出栈、返回栈顶元素、判断栈是否为空、判断栈是否已满和输出栈中所有元素等基本操作。在主函数中,用户可以输入多组入栈、出栈等操作。每次操作后,程序会展示当前堆栈中所有元素。
阅读全文