要求:

//****file: stack.h
/*
对stack进行初始化
检查stack为空,或已满
将整数压入到stack中
从stack里弹出整数
不移除任何袁术,讲过stack的内容输出到标准输出
Stack类的私有成员如下:
一个用于打印错误信息的私有哦成员函数
三个私有数据成员构成了stack类的private实现,此实现为类接口提供支持。

*/

类的实现

 1 #include <iostream>
 2 using namespace std;
 3
 4
 5 class Stack{
 6     public :
 7     enum {MaxStack = 5};
 8     //初始化栈,栈为空
 9     void init () {top = -1;}
10
11     void push (int n){
12         if (isFull()){
13             errMsg("Full stack .cant push");
14             return ;
15         }
16         arr[++top ] =n;
17     }
18
19     int pop() {
20         if (isEmpty () ){
21             errMsg("Empty stack . Popping dummy value.");
22             return dummy_val;
23         }
24
25         return arr[top-- ];
26     }
27     //检查statck是否为空
28     bool isEmpty() {return top <0 ;}
29     //检查stack是否已满
30     bool isFull() {return top >= MaxStack - 1;}
31
32     //dump倾倒 , 按照从stack顶端到底端的次序,依次将Stack的内容输出到标准输出
33     void dump () {
34         for (int i = top; i >= 0; i--)
35             cout << 't' << arr[i] << '\n';
36     }
37
38
39     private :
40         void errMsg(const char * msg) const {
41             cerr << "\n*** Stack operation failure : "<< msg << '\n';
42         }
43
44         int top;
45         int arr[ MaxStack ];
46         int dummy_val;
47
48 };

测试代码如下:

#include <iostream>
#include "stack.h" int main() {Stack s1;s1.init();s1.push(9);s1.push(4);s1.dump();cout << "Popping " << s1.pop() << '\n';s1.dump();s1.push(8);s1.dump();s1.pop();s1.pop();s1.dump();s1.pop();s1.dump();s1.push(3);s1.push(5);s1.dump();for (unsigned i = 0; i <Stack::MaxStack; i++)s1.push(1);s1.dump();return 0;
}

调试结果:

/*
t4
t9
Popping 4
t9
t8
t9*** Stack operation failure : Empty stack . Popping dummy value.
t5
t3*** Stack operation failure : Full stack .cant push*** Stack operation failure : Full stack .cant push
t1
t1
t1
t5
t3--------------------------------
Process exited with return value 0
Press any key to continue . . .*/

转载于:https://www.cnblogs.com/super90/p/4390873.html

C++实现stack【栈】相关推荐

  1. [Java]Stack栈和Heap堆的区别(终结篇)[转]

    首先分清楚Stack,Heap的中文翻译:Stack-栈,Heap-堆. 在中文里,Stack可以翻译为"堆栈",所以我直接查找了计算机术语里面堆和栈开头的词语: 堆存储: hea ...

  2. 【C++ 语言】容器 ( queue 队列 | stack 栈 | priority_queue 优先级队列 | set 集合 | 容器遍历 | map )

    文章目录 queue 队列 stack 栈 priority_queue 优先级队列 priority_queue 优先级队列指定排序方法 priority_queue 优先级队列排序行为 prior ...

  3. java集合类——Stack栈类与Queue队列

    今日走读代码时,遇到stack栈类,特查看java的API文档,总结如下: Stack继承Vector类,它通过五个操作对类 Vector 进行了扩展. 栈是 后进先出的. 栈提供了通常的 push ...

  4. Stack(栈 c++模版实现)

    Stack(栈 c++模版实现) // // Created by XXX on 2021/7/10. //#ifndef C11LEARN_STACK_H #define C11LEARN_STAC ...

  5. JAVA Stack栈和Heap堆的区别(转)

          首先分清楚Stack,Heap的中文翻译:Stack-栈,Heap-堆. 在中文里,Stack可以翻译为"堆栈",所以我直接查找了计算机术语里面堆和栈开头的词语:  堆 ...

  6. C/C++ stack栈的理解以及使用

    哈喽!这里是一只派大鑫,不是派大星.本着基础不牢,地动山摇的学习态度,从基础的C语言语法讲到算法再到更高级的语法及框架的学习.更好地让同样热爱编程(或是应付期末考试 狗头.jpg)的大家能够在学习阶段 ...

  7. java内存stack heap_java内存解析-------stack(栈)和heap(堆)的理解

    学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈". 理解这个概念,对于理解程序的运行至关重要.容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分. ...

  8. java 线程栈大小配置,JVM运行时数据区详解-Stack栈(优化配置、代码样例)

    最近有段时间没有更新Netty的教程了,却发了一些其他的东西.可能有的朋友会问,难道这就完事了?不会的.两方面原因.第一.笔者也是需要工作的人,自然要完成好工作中的任务,这里面也有很多东西需要学习和研 ...

  9. C++queue队列与stack栈

    queue队列: 调用头文件: #include<queue> using namespace std; 详细用法(部分): queue<Type> k;      ----- ...

  10. C++STL之stack栈容器

    C++STL之stack栈容器 1. 再谈栈 回顾一下之前所学的栈,栈是一种先进后出的数据结构,而实现方式需要创建多个结构体,通过链式的方式进行实现,这是标准的栈的思路,而在STL中栈可以以更为简单的 ...

最新文章

  1. Android开发工具之Android Studio--如何打包sdk通过arr包的方式
  2. 数据结构pta选择判断复习
  3. ASPNET MVC Error 403.14
  4. GitHub的安装及使用
  5. APP推广工具(总结)
  6. 【业余无线电】-海兴通SZ-666D信道编程
  7. 卸载WPS后如何修复Office文档图标显示异常
  8. 微信小程序 自定义控件 数字键盘
  9. jQuery的文档处理
  10. java计算机毕业设计火炬中学校刊在线投稿审稿系统源码+数据库+系统+lw文档+mybatis+运行部署
  11. 机器学习之线性回归原理详解、公式推导(手推)、简单实例
  12. 多位数的各位数数字提取方法
  13. php统计字数函数,微博内容字数统计函数(PHP版)
  14. python读xml文件生成.h头文件_Python创建xml文件示例
  15. 漫画算法笔记 桶排序
  16. Android密钥证书管理相关介绍
  17. 为什么只有20%香港人愿意使用移动支付?
  18. php实现报表的分组统计sql,PHP做后台数据报表设计简单的统计函数
  19. 基于物联网的智慧城市技术架构由传统数据仓库向flink流批一体数据仓库跃升
  20. 电子秤专用模拟数字(AD)转换器芯片HX711介绍

热门文章

  1. 2022-2028年中国数字电视产业投资分析及前景预测报告(全卷)
  2. c语言从stdin读入
  3. 当有人看不起你时,要懂得反省自己
  4. PyCharm 使用技巧
  5. OP_REQUIRES failed at conv_ops.cc:386 : Resource exhausted: OOM when allocating tensor with shape..
  6. 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam
  7. SpringBoot整合JDBC、整合Druid数据源详解教程
  8. HBM显存技术与市场前景
  9. 微调torchvision 0.3的目标检测模型
  10. MindArmour差分隐私