因为平常栈中push的数据不会太多,为了节约空间,所以可以在一个顺序表中使用两个栈

结构图:

在这里我会留一个空间用来判断栈是否满!

#include <iostream>
using namespace std;
typedef int ElemType;class DoubleStack
{private:ElemType *top_1;ElemType *base_1;ElemType *top_2;ElemType *base_2;public:DoubleStack(int n = 3){base_1 = new ElemType[n];top_1 = base_1;top_2 = top_1 + n - 1;base_2 = top_2;}bool push_1(ElemType e){if (top_1 == top_2){cout << "Stack_1 has fullen" << endl;return false;}*top_1 = e;top_1++;return true;}bool push_2(ElemType e){if (top_2 == top_1){cout << "Stack_2 has fullen" << endl;return false;}*top_2 = e;top_2--;return true;}bool pop_1(ElemType &e){if (top_1 == base_1){cout << "Stack_1 is empty" << endl;return false;}top_1--;e = *top_1;return true;}bool pop_2(ElemType &e){if (top_2 == base_2){cout << "Stack_2 is empty" << endl;return false;}top_2++;e = *top_2;return true;}bool isEmpty_1(){if (top_1 == base_1){return true;}return false;}bool isEmpty_2(){if (top_2 == base_2){return true;}return false;}bool getTop_1(ElemType &e){if (isEmpty_1()){cout << "Stack_1 is empty" << endl;return false;}e = *(top_1 - 1);return true;}bool getTop_2(ElemType &e){if (isEmpty_2()){cout << "Stack_2 is empty" << endl;return false;}e = *(top_2 + 1);return true;}void printStack_1(){if (isEmpty_1()){cout << "Stack_1 is empty" << endl;return;}ElemType *p = base_1;cout << "底在前顶在后:" << endl;while (p != top_1){cout << *p << " ";p++;}cout << endl;}void printStack_2(){if (isEmpty_2()){cout << "Stack_2 is empty" << endl;return;}ElemType *p = base_2;cout << "底在前顶在后:" << endl;while (p != top_2){cout << *p << " ";p--;}cout << endl;}};int main()
{DoubleStack s(10);for (int i = 0; i < 7; i++){s.push_1(i);}s.push_2(3);s.push_2(4);s.push_1(5);s.printStack_1();s.printStack_2();if (s.isEmpty_1()){cout << "yes" << endl;}else cout << "no" << endl;if (s.isEmpty_2()){cout << "yes" << endl;}else cout << "no" << endl;return 0;
}

C++实现双栈结构(一个顺序表中使用两个栈)相关推荐

  1. 数据结构(二):线性表包括顺序存储结构(顺序表、顺序队列和顺序栈)和链式存储结构(链表、链队列和链栈)...

    还记得数据结构这个经典的分类图吧: 今天主要关注一下线性表. 什么是线性表 线性表的划分是从数据的逻辑结构上进行的.线性指的是在数据的逻辑结构上是线性的.即在数据元素的非空有限集中 (1) 存在唯一的 ...

  2. java设计一个顺序表类的成员函数_顺序表代码讲解以及实现

    用C语言编写一个有关顺序表的程序代码 创建一个顺序表,其数据元素类型为整型: 在该顺序表中插入数据(#include #include #define MaxSize 50 typedef char ...

  3. C语言实现了一个顺序表(附完整源码)

    C语言实现了一个顺序表 顺序表 顺序表的概念 顺序表的存储结构 C语言实现了顺序表完整源码 顺序表 顺序表的概念 顺序表是线性表的顺序存储结构,加按顺序存储方式构造的线性表的存储结构. 说明:对于n个 ...

  4. c语言创建一个顺序表主函数,用C语言来创建一个顺序表(数据结构部分)

    顺序表的创建需要用到结构体,构造一个结构体来存储数据,顺序表申请的内存是连续的.创建顺序表的思路按照数据的"增删改查来进行编写"下列是顺序表的创建代码 创建头文件: sqlist. ...

  5. 构建线性表的c语言代码,数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码...

    1.运行环境 这里说明一下这里所有的C语言代码都是基于code::blocks 20.03编译运行的.当然一些其他集成开发环境应该也是可以的,个人不太喜欢功能太过强大的IDE,因为那同样意味着相关设置 ...

  6. 实现一个顺序表的建立、查找、插入和删除操作【数据结构实验报告】

    文章目录 一.实验目的 二.算法说明 三.算法实现 四.测试效果 一.实验目的 1.熟悉将算法转换为程序代码的过程. 2.了解顺序表的逻辑结构特性,熟练掌握顺序表存储结构的c语言描述方法. 3.熟练掌 ...

  7. 3、线性表的顺序存储结构(顺序表)

     线性表的顺序存储结构简称为顺序表.线性表的顺序存储结构是把线性表中的元素中的元素按照其逻辑顺序依次存储到计算机存储器中指定位置开始的一块连续的存储空间中,它直接将线性表的逻辑结构映射到存储结构上,既 ...

  8. 数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码

    数据结构严蔚敏C语言版-线性表顺序存储结构(顺序表)C语言实现相关代码 1.运行环境 2.准备工作 1)项目构建 1>新建一个SeqList项目 2>新建两个文件Sources和Heade ...

  9. java设计一个顺序表类的成员函数,用java编写一个逐个输出顺序表中所有数据元素的成员函数...

    import java.util.ArrayList; import java.util.List; public class Test { /** * @param args */ public s ...

最新文章

  1. 计算机专业课 复习,计算机专业课复习经验:各个突破、全面掌握
  2. aide怎么打开html文件,求助!aide获取网页html源码
  3. 驱动设计的思想:面向对象/分层/分离
  4. Kubernetes 时代的安全软件供应链
  5. python基础教程:ord()和chr()
  6. 旷视 AI 飞跃 | 研究生联合培养计划
  7. Java Double类shortValue()方法与示例
  8. Python绘制sigmoid函数及其导数图像
  9. 关于VC9和VC6以及Thread Safe和Non Thread Safe版本选择的问题
  10. 每日算法系列【LeetCode 354】俄罗斯套娃信封问题
  11. 苹果ipad服务器无响应怎么办,苹果iPad死机怎么办?几种处理iPad使用过程中死机的方法...
  12. BarTender制作圆形标签的方法
  13. 量化投资 | 统计套利策略
  14. HTML强制关机,如何强制关机【处置技巧】
  15. LightOJ1197 Help Hanzo(欧拉筛+区间素数)
  16. 强烈推荐这 6 款 API 测试工具,绝对有一款没听过
  17. TFT-LCD LVGL与硬件交互
  18. 微信CRM管理系统功能分析
  19. BZOJ1002 FJOI2007 轮状病毒 【基尔霍夫矩阵+高精度】
  20. 基于arduino的智能家居系统

热门文章

  1. iis管理常用命令 创建IIS站点 应用应用程序 及虚拟目录
  2. [转]maven与java命名规则
  3. IOS学习笔记二十三对象归档(NSKeyedArchiver、NSKeyedUnArchiver、NSCodeing)
  4. IOS学习笔记七之KVC和Key路径
  5. C/C++之常用字符串比较总结
  6. linux之less 命令
  7. linux命令 su和sudo,Linux中sudo和su的区别
  8. 号称最强“抓取”工具,没有搞不到的资源!
  9. 一堂儿童科学实验课引起的思考:数学和化学有什么关系?
  10. 薄如冈本,37°恒温发热超薄保暖内衣,既要风度也要温度