顺序栈的实现与使用
1.1 顺序栈的模板定义
#include<iostream>
using namespace std;
const int MaxSize = 2;
template<typename DataType>
class SeqLink {
private:
DataType data[MaxSize];
int top;
public:
SeqLink();
void Push(DataType x); // 入栈函数
DataType Pop(); // 出栈函数,并返回出栈的值
DataType GetTop(); // 获取栈顶部的元素
int Empty(); //判断顺序栈是否为空
};
1.2 顺序栈函数的实现
template<typename DataType>
SeqLink<DataType>::SeqLink() {
top = -1; // 初始化一个空表
}
template<typename DataType>
int SeqLink<DataType>::Empty() {
if (top == -1) return 1; // top为-1就是空栈
else return 0; // top不为0不是空栈
}
template<typename DataType>
void SeqLink<DataType>::Push(DataType x) {
if (top == MaxSize - 1)throw "The Stack is full!";
else {
data[top + 1] = x;
top++;
}
}
template<typename DataType>
DataType SeqLink<DataType>::Pop() {
if (top == -1)throw "The Stack is empty!";
else {
DataType temp = data[top];
top--;
return temp;
}
}
template<typename DataType>
DataType SeqLink<DataType>::GetTop() {
if (top == -1)throw "The Stack is empty!";
else {
return data[top];
}
}
1.3 顺序栈的实例化测试
int main(void) {
SeqLink<int> SeqL{};
cout << SeqL.Empty() << endl;
SeqL.Push(10);
SeqL.Push(9);
cout << SeqL.GetTop() << endl;
cout << SeqL.Pop() << endl;
return 0;
}