#include <iostream>
using namespace std;
const int StackSize = 100;
template <class DataType>
class SeqStack {
public:
SeqStack();
~SeqStack() {}
void Push(DataType x); // 入栈
DataType Pop(); // 出栈
int StackLength();//栈长
DataType GetTop();
bool isEmpty(); // 判断是否为空
void StackTraverse(); // 输出栈
private:
DataType data[StackSize];
int top;
};
template <class DataType>
SeqStack<DataType>::SeqStack() // 构造函数 初始化一个空栈
{ top = -1; }
template <class DataType>
void SeqStack<DataType>::Push(DataType x) {
if (top == StackSize-1) throw "上溢";
data[++top] = x;
}
template <class DataType>
DataType SeqStack<DataType>::Pop() {
if (top == -1) throw "下溢";
DataType x = data[top--];
return x;
}
template <class DataType>
int SeqStack<DataType>::StackLength()
{return top;}
template <class DataType>
DataType SeqStack<DataType>::GetTop() {
if (top == -1) throw "空栈";
return data[top];
}
template <class DataType>
bool SeqStack<DataType>::isEmpty()
{ return top == -1 ? true : false;} //true返回1,false返回0
template <class DataType>
void SeqStack<DataType>::StackTraverse()
{ if(isEmpty())
{ cout<<"此栈为空"<<endl;}
cout << "top" << endl;
int p = top;
while (p != 0) {
cout << " " << data[p--] << endl;
}
}
int main(int argc, const char * argv[]) {
SeqStack<int> s = SeqStack<int>();
cout << "isEmpty : " << s.isEmpty() << endl;
s.Push(86);
s.Push(99);s.Push(67);
s.Push(95);s.Push(88);
s.Push(78);s.Push(83);
s.Push(69);
cout<<"整个栈的长度为:"<<s.StackLength();
cout<<"遍历整个栈:"<<endl;
s.StackTraverse();
cout << "判断此时表是否为空: " << s.isEmpty() << endl;
cout << "获取栈顶元素: " <<s.GetTop() << endl;
cout << "出栈: " << s.Pop() << endl;
cout << "出栈:" << s.Pop() << endl;
cout<<"遍历整个栈:"<<endl;
s.StackTraverse();
cout << "获取此时的栈顶: " <<s.GetTop() << endl;
return 0;
}
顺序栈
最新推荐文章于 2023-10-20 21:42:37 发布