主页有其他数据结构内容(持续更新中)
代码:
#include<iostream>
using namespace std;
template<class T>
class Stack
{
T* s;
int topnum;
int capacity;
public:
Stack(int stackCapacity = 100);
void push(const T& item);
void pop();
bool empty()const;
T top();
int size();
~Stack();
};
template<class T>
Stack<T>::Stack(int stackCapacity):capacity(stackCapacity) {
topnum = -1;
s = new T[capacity];
}
template<class T>
Stack<T>::~Stack<T>() {
delete[]s;
}
template<class T>
void Stack<T>::push(const T &item) {
if (topnum == capacity - 1) {
cout << "Overflow" << endl;
}
else{
s[++topnum] = item;
}
}
template<class T>
void Stack<T>::pop() {
if(topnum == 0){
cout << "Underflow" << endl;
}
else{
topnum--;
}
}
template<class T>
bool Stack<T>::empty() const {
return topnum == -1;
}
template<class T>
int Stack<T>::size() {
return topnum + 1;
}
template<class T>
T Stack<T>::top() {
if (topnum == -1){
cout << "Stack is empty!" << endl;
}
else{
return s[topnum];
}
}