#include<iostream>
using namespace std;
//顺序栈
template<typename T>
class listStack
{
public:
listStack(int _max = 10) { max = _max; L = new T[max]; length = 0; top = &L[0]; }
~listStack() { if (L != nullptr) { delete[] L; } }
void push(T elem) //入栈
{
if (length >= max) { cout << "栈满!" << endl; return; }
L[length] = elem;
top = &L[length];
length++;
}
void pop(T &elem) //出栈
{
length--;
if (length == -1) { length = 0; cout << "栈空!" << endl; return; }
elem = *top;
top = &L[length - 1];
}
int getLength() { return length; }
void printStack() //遍历
{
//从栈顶到栈底遍历
T* temp = top;
int num = length;
for (int i = 0; i < length; i++) { num--; cout << *temp << " "; temp = &L[num - 1]; }
cout << endl;
}
T& getTop() { return *top; } //获取栈顶元素
void removeStack() { length = 0; top = &L[0]; } //清空栈
private:
int length; //栈长
int max; //栈最大容量
T* L; //栈本体
T* top; //栈顶指针
};
数据结构-栈(顺序表示)(c++)
于 2022-05-04 18:34:54 首次发布