【题目要求】
完成Stack类的改造,将其设置为模板类。 使用这个模板Stack类创建两个堆栈对象。 在主程序中创建一个字符堆栈,一个int堆栈,分别压入一个字符串和5个整数,从顶端分别打印出两个堆栈的内容。
头歌上的3个测试用例可以通过。
#include <iostream>
using namespace std;
template <typename T>
class Stack {
private:
T* stackArray; // 堆栈数组
int top; // 栈顶指针
int maxSize; // 堆栈最大容量
public:
Stack(int size) {
stackArray = new T[size];
top = -1;
maxSize = size;
}
~Stack() {
delete[] stackArray;
}
void push(T item) {
if (top == maxSize - 1) {
cout << "堆栈已满,无法压入!" << endl; //isFull()函数也可
return;
}
stackArray[++top] = item;
}
T pop() {
if (top == -1) {
cout << "堆栈为空,无法弹出!" << endl; //isEmpty()函数也可
return T();
}
return stackArray[top--];
}
void print() {
for (int i = top; i >= 0; i--) {
cout << stackArray[i] << " ";
}
}
};
int main() {
Stack<char> charStack(10);
char c;
while((c=getchar())!='\n'){
charStack.push(c);
}
charStack.print();
cout << endl;
Stack<int> intStack(10);
for (int i = 1; i <= 5; i++) {
int a;
cin>>a;
intStack.push(a);
}
intStack.print();
return 0;
}