栈的实现
2015-08-05 16:43
330 查看
/****************************************************************
* 栈的数据成员:大小,元素个数,栈顶
* 栈的成员方法:初始化,出栈,入栈,获取栈顶元素,是否为空,是否满
****************************************************************/
#include<iostream> using namespace std; //栈的实现 template<class T> class Stack_{ private: int MaxSize; int top; T*data; public: Stack_() { MaxSize=100; top=-1; data=new T[MaxSize]; } ~Stack_() { if(data!=NULL) { delete []data; cout<<"释放栈!"<<endl; } } bool Empty() { if(top==-1) { return true; }else{ return false; } } bool Full() { if(top==MaxSize-1) { return true; }else{ return false; } } T GetTop() { try { if(Empty()) throw 0; return data[top]; }catch(int e){ if(e==0) { cout<<"栈空!"<<endl; } exit(0); } } bool Push(T m_data) { if(Full())return false; else{ top++; data[top]=m_data; return true; } } bool Pop() { if(Empty())return false; else{ top--; return true; } } int GetSize() { return top+1; } }; int main() { int a[4]={1,4,3,2}; Stack_<int>m_stack; if(m_stack.Empty())cout<<"空栈!"<<endl; else cout<<"非空栈!"<<endl; cout<<endl; if(m_stack.Full())cout<<"满栈!"<<endl; else cout<<"非满栈!"<<endl; cout<<endl; m_stack.Push(a[0]); m_stack.Push(a[1]); m_stack.Push(a[2]); m_stack.Push(a[3]); cout<<"获取栈中元素个数: "<<m_stack.GetSize()<<endl; cout<<"获取栈顶元素: "<<m_stack.GetTop()<<endl; cout<<endl; //出栈 if(m_stack.Pop())cout<<"出栈成功!"<<endl; else cout<<"出栈失败!"<<endl; cout<<endl; cout<<"获取栈中元素个数: "<<m_stack.GetSize()<<endl; cout<<"获取栈顶元素: "<<m_stack.GetTop()<<endl; cout<<endl; m_stack.Push(9); cout<<"获取栈中元素个数: "<<m_stack.GetSize()<<endl; cout<<"获取栈顶元素: "<<m_stack.GetTop()<<endl; cout<<endl; for(int i=0;i<3;i++) { if(m_stack.Pop())cout<<"出栈成功!"<<endl; else cout<<"出栈失败!"<<endl; cout<<endl; } cout<<"获取栈中元素个数: "<<m_stack.GetSize()<<endl; cout<<"获取栈顶元素: "<<m_stack.GetTop()<<endl; cout<<endl; return 0; }
相关文章推荐
- fragmentActivity布局文件报错Error inflating class fragment
- NLP超级初步
- spring 配置文件属性
- CentOS 修改主机名
- JS学习之this关键字
- vs执行程序时提示无法启动程序,系统找不到指定的文件
- 轻松入门学习java入门的常用语言知识
- duilib中,子xml创建自定义控件
- Android.mk简介
- SYN Cookie的原理和实现
- 速度之王 — LZ4压缩算法
- Eclipse+Spring+SpringMVC+Mybatis+Maven+多库配置+resin
- UVa 725----Division(枚举)
- ROS 教程之 vision : 用各种摄像头获取图像
- jq实现切换栏目显示效果
- Android.mk简介<转>
- 被7整除
- Sqlite3中存储类型和数据类型结合文档解析。
- 【Python】【3】Python之——从HelloWorld开始(四则运算,简单函数以及简单模块)
- PowerPoint201设置特殊边框技巧精美ppt模板下载