堆栈模板
来源:互联网 发布:打印机数据线速度 编辑:程序博客网 时间:2024/05/01 17:22
#include<iostream>#include<string>#include<cassert>using namespace std;template <class T>class Stack{public:enum {DefaultStack=50,EmptyStack=-1};Stack(); //构造函数Stack ( int ); //重载构造函数~Stack(); //析构函数void push( const T &);T pop();T topNoPop() const;bool empty() const;bool full() const;private:T* elements;int top;int size;void allocate(){elements =new T[size];top=EmptyStack;}void msg(const char* m) const{cout<<" *** "<<m<<" *** "<<endl;}friend ostream& operator<<(ostream&,const Stack<T>&);//友元函数};template<class T>Stack<T>::Stack(){size=DefaultStack;allocate();}template<class T>Stack<T>::Stack(int s){if(s<0)s*=-1;else if(0==s)s=DefaultStack;size=s;allocate();}template <class T>Stack<T>::~Stack(){delete [] elements;}template <class T>void Stack<T>::push(const T &e){ assert(!full());if(!full())elements[++top]=e;elsemsg("Stack full!");}template <class T>T Stack<T>::pop(){assert(!empty());if(!empty())return elements[top--];else{msg("Stack empty!");T dummy_value;return dummy_value; //return arbitrary value}}template <class T>T Stack<T>::topNoPop() const{assert(top>EmptyStack);if(!empty())return elements[top];else{msg("Stack empty!");T dummy_value;return dummy_value;}}template <class T>bool Stack<T>::empty() const{return top<=EmptyStack;}template <class T>bool Stack<T>::full() const{return top+1>=size;}template <class T>ostream& operator<<(ostream& os,const Stack<T>& s)// 友元函数 重载运算符"<<"{s.msg("Stack contents:");int t=s.top;while(t>s.EmptyStack)cout<<s.elements[t--]<<endl;return os;}int main(){Stack<int> i_stack(4);int a;int i=0;while(i++<4){cin>>a;i_stack.push(a);} cout<<i_stack.pop(); //弹出栈顶元素cout<<i_stack.topNoPop(); return 0;}
0 0
- 模板堆栈
- 堆栈模板
- 类模板实现堆栈
- C++ 堆栈模板
- C++模板堆栈类
- 堆栈类模板
- 模板类实现堆栈:
- 堆栈的基本功能模板
- 一个异质堆栈模板.
- c++堆栈类模板实现
- 用模板写的堆栈类
- 堆栈类模板的创建和使用
- C++数组实现队列、堆栈、模板类
- (C++)堆栈的类模板
- C++ 模板应用举例_模板实现STL类(堆栈)
- 堆栈
- 堆栈
- 堆栈
- UserAgent的历史变迁
- APP刷榜?移动互联网不可承受之重
- 经典java面试题
- linker command failed with exit code 1 解决
- 【ObjC那点儿事儿】OC对象内存管理 MRR
- 堆栈模板
- 访问jira网站中已解决问题链接时跳转到另一IP的解决办法
- 银行业务调度系统
- 成绩转换程序(2004)
- C语音合法标识符
- ASCII编码排序(2000)
- 计算两点间的距离(2001)
- 计算球体积(2002)
- 求绝对值(2003)