【数据结构】用C++编写栈及基本操作(包括入栈,出栈,获得栈顶,摧毁,清空等等)
//【数据结构】用C++编写栈及基本操作(包括入栈,出栈,获得栈顶,摧毁,清空等等) //头文件 #ifndef _SEQ_STACK_ #define _SEQ_STACK_ #include <iostream> using namespace std; template <class Type> class SeqStack { public: SeqStack(size_t sz=INIT_SIZE) { capacity = sz > INIT_SIZE ? sz : INIT_SIZE; base = new Type[capacity]; top = 0; } ~SeqStack() { destory(); } public: bool empty() const //判断是否为空 { return(top == 0); } bool full()const //判断是否已满 { return(top >= capacity); } void push(const Type &x) //进栈 { if (full() ) { cout << "栈已满,不能插入。" << endl; return; } base[top++] = x; } void pop() //出栈 { top--; } bool getTop(Type &x) const //获得栈顶 { if (top == 0) return false; x = base[top - 1]; return true; } int length() const //求大小 { return top; } void clear() //清除 { top = 0; } void destory() //摧毁 { delete[]base; base = NULL; capacity = top = 0; } void show() const //显示 { if (empty() == 1) { cout << "栈为空" << endl; return; } for (int i=top-1; i >=0; i--) { cout << base[i]<<endl; } } private: enum {INIT_SIZE = 8 }; Type *base; int capacity; int top; }; #endif //主函数 #include "SeqStack.h" void main() { SeqStack<int> mystack; int select = 1; int Item; while (select) { cout << "**************************************" << endl; cout << "* [1] show [2] push *" << endl; cout << "* [3] pop [4] length *" << endl; cout << "* [5] clear [6] destory *" << endl; cout << "**************************************" << endl; cout << "请选择:>"; cin >> select; switch (select) { case 1: mystack.show(); break; case 2: cout << "请输入要插入的值(-1结束):>"; while (cin >> Item, Item != -1) { mystack.push(Item); } break; case 3: mystack.pop(); break; case 4: cout << "大小为:" << mystack.length()<<endl; break; case 5: mystack.clear(); break; case 6: mystack.destory(); break; default: break; } } return; } <img src="http://img.blog.csdn.net/20150531225418525?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG91ZG91d2ExMjM0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。