定义一个通用栈(先进后出)类并加以实现,编写主函数进行测试
时间: 2024-01-24 19:03:36 浏览: 72
好的,下面是 C++ 中通用栈类的定义及实现:
```c++
#include <iostream>
using namespace std;
template <class T>
class Stack {
private:
T* data; // 栈数据
int top; // 栈顶指针
int size; // 栈大小
public:
Stack(int s) {
data = new T[s];
top = -1;
size = s;
}
~Stack() {
delete[] data;
}
bool push(T element) {
if (top >= size - 1) {
return false; // 栈满
}
top++;
data[top] = element;
return true;
}
bool pop(T& element) {
if (top < 0) {
return false; // 栈空
}
element = data[top];
top--;
return true;
}
bool isEmpty() {
return top == -1;
}
};
int main() {
Stack<int> intStack(5); // 创建一个大小为 5 的 int 类型栈
Stack<char> charStack(5); // 创建一个大小为 5 的 char 类型栈
// 向 int 栈中添加元素
cout << "向 int 栈中添加元素:" << endl;
for (int i = 0; i < 6; i++) {
if (intStack.push(i)) {
cout << "Push " << i << " 成功" << endl;
}
else {
cout << "Push " << i << " 失败" << endl;
}
}
// 从 int 栈中弹出元素
cout << "从 int 栈中弹出元素:" << endl;
int element;
while (intStack.pop(element)) {
cout << "Pop " << element << " 成功" << endl;
}
// 向 char 栈中添加元素
cout << "向 char 栈中添加元素:" << endl;
for (char c = 'a'; c <= 'f'; c++) {
if (charStack.push(c)) {
cout << "Push " << c << " 成功" << endl;
}
else {
cout << "Push " << c << " 失败" << endl;
}
}
// 从 char 栈中弹出元素
cout << "从 char 栈中弹出元素:" << endl;
char ch;
while (charStack.pop(ch)) {
cout << "Pop " << ch << " 成功" << endl;
}
return 0;
}
```
程序中定义了一个模板类 `Stack`,可以用来创建不同类型的通用栈。在 `main` 函数中,我们使用 `int` 类型和 `char` 类型分别创建了两个大小为 5 的栈,并对栈进行了 push 和 pop 操作。
阅读全文