使用C++编写一个程序模拟堆栈,要求能够模拟、入栈、出栈、返回栈顶元素等基本操作。栈中元素可用整数代替。不能使用C++模板库预定义的类型。程序运行中可输入多组入栈、出栈操作,每次操作后展示栈中元素。
时间: 2024-03-13 09:46:28 浏览: 65
好的,以下是用 C++ 实现的堆栈模拟程序。请注意,该程序只能处理整数类型的元素。
```c++
#include <iostream>
#include <vector>
using namespace std;
class Stack {
private:
vector<int> stk;
public:
void push(int);
void pop();
int top();
bool empty();
};
void Stack::push(int x) {
stk.push_back(x);
}
void Stack::pop() {
if (stk.empty()) {
cout << "Stack is empty!" << endl;
return;
}
stk.pop_back();
}
int Stack::top() {
if (stk.empty()) {
cout << "Stack is empty!" << endl;
return -1;
}
return stk.back();
}
bool Stack::empty() {
return stk.empty();
}
int main() {
Stack stk;
int choice, x;
while (true) {
cout << "1. Push" << endl;
cout << "2. Pop" << endl;
cout << "3. Top" << endl;
cout << "4. Exit" << endl;
cout << "Enter your choice: ";
cin >> choice;
switch (choice) {
case 1:
cout << "Enter element to push: ";
cin >> x;
stk.push(x);
break;
case 2:
stk.pop();
break;
case 3:
if (!stk.empty())
cout << "Top element is: " << stk.top() << endl;
break;
case 4:
exit(0);
default:
cout << "Invalid choice!" << endl;
}
if (!stk.empty()) {
cout << "Stack elements are: ";
for (int i = 0; i < stk.size(); i++)
cout << stk[i] << " ";
cout << endl;
}
else {
cout << "Stack is empty!" << endl;
}
}
return 0;
}
```
这个程序很简单,使用了 C++ STL 中的 vector 容器来模拟堆栈。它具有基本的入栈、出栈、返回栈顶元素等操作,并且可以处理多个操作序列。
阅读全文