1 #include <iostream>
  2 using namespace std;
  3 #define MAXSIZE 100  //链式栈存储空间初始分配大小
  4 #define OK 1        //链栈通常用单链表表示,节点结构与单链表相同。
  5 #define ERROR 0
  6 #define OVERFLOW -1
  7 typedef struct StackNode  //链栈结构
  8 {
  9     int data;    //节点数据
 10     struct StackNode *next;    //节点指针,指向下一个节点
 11 }StackNode,*LinkStack;
 12
 13 //初始化,构造一个空栈
 14 int InitStack(LinkStack &s)
 15 {
 16     s=NULL;   //栈顶指针置空
 17     return 0;
 18 }
 19
 20 //入栈操作
 21 int PushStack(LinkStack &s,int e)
 22 {
 23     LinkStack p = new StackNode;  //生成新节点
 24     p->data = e;  //将新节点数据域置为e
 25     p->next=s;   //将新节点插入栈顶
 26     s=p;        //修改栈顶指针为p
 27     return 0;
 28 }
 29
 30 //出栈操作
 31 int PopStack(LinkStack &s)
 32 {
 33     LinkStack p = new StackNode;
 34     if(s==NULL)        //栈空
 35         return -1;
 36     p = s;        //用p临时保存栈顶空间,以备释放
 37     s = s->next;  //修改栈顶指针
 38     delete p;     //释放原栈顶元素的空间
 39     return 0;
 40 }
 41
 42 //取栈顶元素
 43 int GetTop(LinkStack s)
 44 {
 45     if(s!=NULL)    //栈非空
 46         return s->data; //栈顶指针不变,返回栈顶元素的值
 47 }
 48
 49 //输出栈
 50 void printstack(LinkStack s)
 51 {
 52     while(s!=NULL)    //栈非空
 53     {
 54         cout << GetTop(s) << " ";
 55         s=s->next;  //不要写成popstack(s),不然输出一次后就栈就空了,
 56                             //没法第二次输出。
 57     }
 58     cout << endl;
 59 }
 60
 61 int main()
 62 {
 63     LinkStack s;
 64     InitStack(s);
 65     for (int i = 0; i < 10; ++i)
 66     {
 67         PushStack(s, i);
 68     }
 69     int a, b;
 70     cout << "1--print,2--pop,3--push,0--exit\n";
 71     for(int i = 0; i < 4; ++i)
 72     {
 73         cin >> a;
 74         if (a == 1)
 75         {
 76             printstack(s);
 77         }
 78         else if (a == 2)
 79         {
 80             cout << "元栈为:";
 81            printstack(s);
 82             PopStack(s);
 83             cout << "pop后栈为:";
 84             printstack(s);
 85         }
 86         else if (a == 3)
 87         {
 88             cout << "元栈为:";
 89             printstack(s);
 90             cout << "请输入要插入的数:";
 91             cin >> b;
 92             PushStack(s, b);
 93             cout << "插入后栈为:";
 94             printstack(s);
 95         }
 96         else if (a == 0)
 97         {
 98             return 0;
 99         }
100     }
101     return 0;
102 }
103                     

转载于:https://www.cnblogs.com/DSYR/p/9163050.html

数据结构期末复习(に)--链式栈定义及使用相关推荐

  1. 数据结构期末复习笔记(NEU版)

    数据结构期末复习笔记 绪论 数据结构的概念 数据结构的分类 数据结构研究的内容 算法的重要特性 算法的设计要求 题目汇总 线性表 栈和队列 栈 队列 题目 数组与广义表 树 二叉树 二叉树的遍历 线索 ...

  2. 数据结构期末复习(四)

    数据结构期末复习(四) 树的相关概念 节点的度:一个节点的子树数目成为节点的度.也就是一个节点连着几个子节点的意思. 叶子节点:没有子节点的节点. 树的度:Max{所有节点的度}. 深度:就是树的高度 ...

  3. 数据结构期末复习(4.二叉树的遍历)

    准备数据结构的期末考的复习篇 习题内容(红色划线的是做错过的题,要注意) 解析部分(题目的答案用了浅色字体,为了方便自测,看不清可以选中那部分查看) 关联内容[加粗中括号中的内容,包括一些我自己的记忆 ...

  4. 数据结构期末复习资料:重点总结+题库(含答案详解),助你一天复习数据结构,高分通过数据结构期末考试!不挂科!

    10小时不太可能了,但是100个小时完全OK的! 送你份独家突击复习资料,以下正文: 据说在期末考试前夕,同学们的学习能力会变强!但是数据结构,毕竟作为一门特别难的科目,如果平时没有学好,那么很可能就 ...

  5. HDU数据结构期末复习-1.绪论

    <数据结构>复习笔记 由HDU-STEA_banjiu修改于2021年1月9日 参考书目:严蔚敏<数据结构(第二版)>.王导论坛<数据结构考研复习指导>.HDU-S ...

  6. 数据结构-期末复习重要知识点总结

    目录 第一章-绪论 第二章-线性表 3.顺序表表示 4.顺序表基本运算 5.链表 6.链表的基本运算 7.循环链表 8.双链表 9.静态链表 10.一元多项式表示及相加 第三章-限定性线性表(栈与队列 ...

  7. 挑战全网最强数据结构期末复习帖

    目录 前言 一,算法介绍 1.1 算法特性 1.2 算法设计的要求 1.3 算法效率的度量方法 二,算法时间复杂度 2.1 定义及理解 2.2 时间复杂度的推导 三,函数调用的时间复杂度分析 3.1 ...

  8. 数据结构期末复习(十套试卷)库题

    第一套 题目 一.                   单选题(每题 2 分,共20分) 1.     对一个算法的评价,不包括如下(B   )方面的内容. A.健壮性和可读性   B.并行性     ...

  9. 数据结构期末复习知识点详解

    第二章.线性表 1.线性表顺序存储结构和链式存储结构的特点 顺序存储时,相连数据元素的存放地址也相邻,逻辑与物理统一:内存中可用的存储单元都是连续的 优点:存储密度大,易于查找和修改 缺点:插入和删除 ...

最新文章

  1. Redis 高级特性(1)—— 事务 过期时间 排序
  2. 13个 ASP.NET MVC 的扩展
  3. AI删库,程序员背锅?
  4. Bytes int java_Java Bytes.readInt方法代码示例
  5. 将某个目录下的所有文件进行压缩
  6. linux 之RAID详解
  7. OTL、OCL、BTL电路及其判断方法
  8. dubbo使用简单说明
  9. 深度技术Win11 64位最新旗舰版镜像V2021.08
  10. 从文件夹中读取所有文件的指定内容,按行读取。
  11. ueditor 编辑器增加css样式_Web入侵之利用编辑器漏洞入侵
  12. ArcGIS案例学习笔记_3_2_CAD数据导入建库
  13. 中内连和外联的去区别_外联请客丨第一百七十四期:鱼来了铁板烧请你吃铁板烤鱼和香辣牛蛙虾!...
  14. Cannot negotiate authentication mechanism svn: Unable to connect to a repository at URL 'svn://gite
  15. MIUI9系统怎么卡刷开发版获取ROOT超级权限
  16. 关于不同操作系统下浏览器兼容问题
  17. 微信公众帐号开发教程第18篇-应用实例之音乐搜索
  18. 浅谈TEDS智能传感器
  19. linux服务器强行删除隐藏文件
  20. SMM(Spring+SpringMVC+MyBatis)

热门文章

  1. 大学生换学校学计算机,高校换上新课桌,同学表示“世界观被颠覆”,网友:黑科技的诞生...
  2. statement执行insert into语句_【图文并茂】源码解析MyBatis ShardingJdbc SQL语句执行流程详解...
  3. 环信SDK 踩坑记webIM篇(二)
  4. Python笔记-使用U2滑动APP
  5. C++设计模式-装饰模式
  6. VS|Qt工作笔记-修改pro文件生成目录清晰的项目结构并添加三方库
  7. Qt文档阅读笔记-QUdpSocket基本表述及简单实现
  8. 编码风格工作笔记-初步模仿大佬编码风格
  9. Qt工作笔记-自定义开关控件
  10. Java工作笔记-String转Integer可以转与不可以转的情况