用c++定义一个堆栈类模板,使其具有如下操作:压栈、弹栈、判断堆栈是否空、显示 堆栈中指定位置的元素值。
时间: 2023-12-19 22:04:33 浏览: 96
c++模板类堆栈
好的,以下是一个简单的堆栈类模板的实现,满足您的需求:
```c++
#include <iostream>
using namespace std;
template <class T>
class Stack {
private:
T *stackArray; // 堆栈数组
int stackSize; // 堆栈大小
int top; // 栈顶指针
public:
// 构造函数,创建一个指定大小的堆栈
Stack(int size) {
stackArray = new T[size];
stackSize = size;
top = -1;
}
// 析构函数,释放堆栈数组内存
~Stack() {
delete [] stackArray;
}
// 压栈操作,将元素压入堆栈
void push(T element) {
if (top == stackSize - 1) {
cout << "堆栈已满,无法继续压栈!" << endl;
return;
}
stackArray[++top] = element;
}
// 弹栈操作,将栈顶元素弹出
void pop() {
if (top == -1) {
cout << "堆栈已空,无法继续弹栈!" << endl;
return;
}
top--;
}
// 判断堆栈是否空
bool isEmpty() {
return (top == -1);
}
// 显示堆栈中指定位置的元素值
void display(int pos) {
if (pos < 0 || pos > top) {
cout << "输入位置无效!" << endl;
return;
}
cout << "堆栈中第 " << pos+1 << " 个元素的值为:" << stackArray[pos] << endl;
}
};
```
使用示例:
```c++
int main() {
// 创建一个容量为5的整型堆栈
Stack<int> myStack(5);
// 压入4个元素
myStack.push(10);
myStack.push(20);
myStack.push(30);
myStack.push(40);
// 显示第3个元素的值
myStack.display(2);
// 弹出2个元素
myStack.pop();
myStack.pop();
// 显示第2个元素的值
myStack.display(1);
// 压入2个元素
myStack.push(50);
myStack.push(60);
// 显示第5个元素的值
myStack.display(4);
return 0;
}
```
阅读全文