C++实现stack【栈】
要求:
//****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【栈】相关推荐
- [Java]Stack栈和Heap堆的区别(终结篇)[转]
首先分清楚Stack,Heap的中文翻译:Stack-栈,Heap-堆. 在中文里,Stack可以翻译为"堆栈",所以我直接查找了计算机术语里面堆和栈开头的词语: 堆存储: hea ...
- 【C++ 语言】容器 ( queue 队列 | stack 栈 | priority_queue 优先级队列 | set 集合 | 容器遍历 | map )
文章目录 queue 队列 stack 栈 priority_queue 优先级队列 priority_queue 优先级队列指定排序方法 priority_queue 优先级队列排序行为 prior ...
- java集合类——Stack栈类与Queue队列
今日走读代码时,遇到stack栈类,特查看java的API文档,总结如下: Stack继承Vector类,它通过五个操作对类 Vector 进行了扩展. 栈是 后进先出的. 栈提供了通常的 push ...
- Stack(栈 c++模版实现)
Stack(栈 c++模版实现) // // Created by XXX on 2021/7/10. //#ifndef C11LEARN_STACK_H #define C11LEARN_STAC ...
- JAVA Stack栈和Heap堆的区别(转)
首先分清楚Stack,Heap的中文翻译:Stack-栈,Heap-堆. 在中文里,Stack可以翻译为"堆栈",所以我直接查找了计算机术语里面堆和栈开头的词语: 堆 ...
- C/C++ stack栈的理解以及使用
哈喽!这里是一只派大鑫,不是派大星.本着基础不牢,地动山摇的学习态度,从基础的C语言语法讲到算法再到更高级的语法及框架的学习.更好地让同样热爱编程(或是应付期末考试 狗头.jpg)的大家能够在学习阶段 ...
- java内存stack heap_java内存解析-------stack(栈)和heap(堆)的理解
学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈". 理解这个概念,对于理解程序的运行至关重要.容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分. ...
- java 线程栈大小配置,JVM运行时数据区详解-Stack栈(优化配置、代码样例)
最近有段时间没有更新Netty的教程了,却发了一些其他的东西.可能有的朋友会问,难道这就完事了?不会的.两方面原因.第一.笔者也是需要工作的人,自然要完成好工作中的任务,这里面也有很多东西需要学习和研 ...
- C++queue队列与stack栈
queue队列: 调用头文件: #include<queue> using namespace std; 详细用法(部分): queue<Type> k; ----- ...
- C++STL之stack栈容器
C++STL之stack栈容器 1. 再谈栈 回顾一下之前所学的栈,栈是一种先进后出的数据结构,而实现方式需要创建多个结构体,通过链式的方式进行实现,这是标准的栈的思路,而在STL中栈可以以更为简单的 ...
最新文章
- Android开发工具之Android Studio--如何打包sdk通过arr包的方式
- 数据结构pta选择判断复习
- ASPNET MVC Error 403.14
- GitHub的安装及使用
- APP推广工具(总结)
- 【业余无线电】-海兴通SZ-666D信道编程
- 卸载WPS后如何修复Office文档图标显示异常
- 微信小程序 自定义控件 数字键盘
- jQuery的文档处理
- java计算机毕业设计火炬中学校刊在线投稿审稿系统源码+数据库+系统+lw文档+mybatis+运行部署
- 机器学习之线性回归原理详解、公式推导(手推)、简单实例
- 多位数的各位数数字提取方法
- php统计字数函数,微博内容字数统计函数(PHP版)
- python读xml文件生成.h头文件_Python创建xml文件示例
- 漫画算法笔记 桶排序
- Android密钥证书管理相关介绍
- 为什么只有20%香港人愿意使用移动支付?
- php实现报表的分组统计sql,PHP做后台数据报表设计简单的统计函数
- 基于物联网的智慧城市技术架构由传统数据仓库向flink流批一体数据仓库跃升
- 电子秤专用模拟数字(AD)转换器芯片HX711介绍
热门文章
- 2022-2028年中国数字电视产业投资分析及前景预测报告(全卷)
- c语言从stdin读入
- 当有人看不起你时,要懂得反省自己
- PyCharm 使用技巧
- OP_REQUIRES failed at conv_ops.cc:386 : Resource exhausted: OOM when allocating tensor with shape..
- 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam
- SpringBoot整合JDBC、整合Druid数据源详解教程
- HBM显存技术与市场前景
- 微调torchvision 0.3的目标检测模型
- MindArmour差分隐私