顺序栈

来源:互联网 发布:36o软件管家下载 编辑:程序博客网 时间:2024/06/05 05:03
#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返回0template <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;}

原创粉丝点击