/********************      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;
}

转载于:https://blog.51cto.com/lddyw/1542462

C++中 栈的简单封装相关推荐

  1. iOS中SDK的简单封装与使用

    一.功能总述 在博客开始的第一部分,我们先来看一下我们最终要实现的效果.下图中所表述的就是我们今天博客中要做的事情,下方的App One和App Two都植入了我们将要封装的LoginSDK, 两个A ...

  2. 孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2

    孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第九天. 今天继续学习mongoDB的简单操作, ...

  3. php简单的功能模块,php中mysql模块部分功能的简单封装

    php中mysql模块部分功能的简单封装 复制代码 代码如下: class mysql { private $db; // datebase connect private $result; // m ...

  4. 中通/圆通API接口 PHP 简单封装示例

    圆通 API 接口 - 简单封装 PHP yto.api.php 文件 class YTO {private $_domain = 'http://opentestapi.yto.net.cn/ser ...

  5. JS栈结构的简单封装

    栈:是一种遵循后进先出(Last In First Out / LIFO) 原则的一种有序集合. 新添加或者要删除的元素都会保存在栈的同一端,我们把它叫做栈顶,另外一端叫做栈底. 在栈中所有的新元素都 ...

  6. 【数据结构】栈的简单理解以及对栈的基本操作

    一.静态栈的简单操作 先来简单的了解一下栈 1.栈:一种特殊的线性表,其实只允许在固定的一端进行插入或删除操作.进行数据插入和删除的一端称为栈顶,另一端称为栈底.不含任何元素的栈称为空栈,栈又称为 后 ...

  7. C/C++ 线程池的简单封装

    **C/C++ 线程池的简单封装 最近在搭建一个服务器,打算把线程池应用进去,根据老师课上所讲和网上前辈们提供的资料对线程池有了以下总结:** 一.线程的创建需要内存资源,线程的创建和销毁需要时间资源 ...

  8. Android APP更新下载工具类——简单封装DownloadManager

    几乎所有APP都包含了检查更新功能,更新下载功能的实现方式常用的有两种:1.使用App网络框架的文件下载请求:2.使用自带的DownloadManager类:本文介绍第二种,简单封装一下Downloa ...

  9. .NET中栈和堆的比较 #1

    原文出处:http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.a ...

最新文章

  1. java timer和timertask_Timer和TimerTask与Java中的线程+睡眠
  2. Redis系列四:redis支持的数据类型
  3. python读取文件with open_python 文件读写操作open和with的用法
  4. mantis1.18升级1.2X方法
  5. python中的def语句_Python def 函数
  6. java图片简单爬虫_[Java教程]使用jsoup进行简单的爬虫操作爬取图片
  7. mvc5 + ef6 + autofac搭建项目(三)
  8. 一家胡三家的人工智能来了
  9. QT 笔记6 | Qt网络编程
  10. 基于java的超市积分管理系统设计(含源文件)
  11. 如何使用网易有道词典翻译英文文档(word格式、pdf格式)
  12. [中文/英文]VC6 sp6补丁下载|VS6 sp6补丁下载 [防VC6link死机]
  13. 【第三方互联】2、创建腾讯QQ互联应用
  14. 台式计算机如何定时关机,台式电脑设置定时关机
  15. 渝粤题库 陕西师范大学 《中国古代文学(四)》作业
  16. 搭建MYSQL的mmm架构出现 master/AWAITING_RECOVERY. Roles报错
  17. 【Unity】大世界实现方案
  18. 洛谷P1010 [NOIP1998 普及组] 幂次方题解
  19. 【VB.NET】简介
  20. SSD 速度对编译的影响

热门文章

  1. Windows下Apache架站务实
  2. php实现从本网站每天出站连接向目标网站贡献的IP和PV的统计
  3. ASP.NET案例--新闻模块设计
  4. IBM加入OpenOffice 贡献Lotus Notes程序代码
  5. 微信小程序制作-随笔4
  6. 镜像的使用(6-13)
  7. Java try和catch的使用介绍
  8. XCode SDK接入时提示: UIApplicationInvalidInterfaceOrientation
  9. js apply/call/caller/callee/bind使用方法与区别分析
  10. Kivy: Crossplatform Framework for NUI