C++中 栈的简单封装
2014-08-20 13:06
260 查看
/******************* * Stack * * *****************/ #include <iostream> using namespace std; /***************************定义***************************************/ class Stack { public: Stack(int capacity = 5); virtual ~Stack(); bool push(int v);//返回是否入栈成功 bool pop(int *p = NULL);//返回出栈是否成功,成功则返回p [变相返回] bool empty();//判断是否空栈 bool full();//判断是否栈满 private: int * pdata;//存放数据 int capacity;//定义栈大小 int top; }; /***************************构造函数************************************/ Stack::Stack(int capacity) { this->capacity = capacity; pdata = new int[capacity];//不需要*sizeof[int] top = 0; } /***************************析构函数************************************/ Stack::~Stack() { if(NULL!=pdata) { delete [] pdata; } pdata = NULL; } /***************************进栈函数************************************/ bool Stack::push(int v) { if(full())//stack is full { cerr<<"stack is full."<<endl; return false; } cout<<"Stack push "<<v<<endl; pdata[top++] = v;//简化 } /***************************出栈函数************************************/ bool Stack::pop(int * p) { if(top <= 0)//if(empty()) { cerr<<"stack is empty."<<endl; return false; } if(NULL!=p) { *p = pdata[top-1]; } cout<<"stack pop "<<pdata[top-1]<<endl; top--; return true; } /***************************判空函数************************************/ bool Stack::empty() { if(top<=0) { return true; } return false; } /***************************判满函数************************************/ bool Stack::full() { if(top>=capacity) { return true; } return false; } /***************************测试函数************************************/ int main(int argc,char **argv) { Stack s; int i = 0; s.push(1); s.push(2); s.pop(); s.push(3); s.push(4); s.push(5); s.push(6); s.push(7); cout<<endl<<endl; for(;i<7;i++) { s.pop(); } return 0; }
本文出自 “咙叮咚员外” 博客,请务必保留此出处http://lddyw.blog.51cto.com/4151746/1542462
相关文章推荐
- 一个简单封装用户命令的C++程序
- c++ 数据封装模式之一: 简单工厂模式
- C++ 读写文件的简单封装
- 一种基于简单递归思想的易操控xml解析封装(C++)
- C++ 简单封装socket类包含TCP和UDP基本通信能力
- WebBrowser Control的一个简单C++封装
- C++封装一个简单的线程类
- c++关于封装、接口的简单理解
- (转)WebBrowser Control的一个简单C++封装
- C++简单封装互斥量
- c++ 数据封装模式之一: 简单工厂模式
- 用C++简单封装了一下SQLite
- 用C++封装了一个简单的“按钮”类
- C++简单封装pthread
- C++ 简单封装socket类包含TCP和UDP基本通信能力
- WebBrowser Control的一个简单C++封装
- c++仿java简单封装
- MYSQL的简单封装,学习基于托管的C++开发
- C++中 循环队列的简单封装
- C++ 操作Redis 简单封装类