《数据结构与算法》 青岛大学-王卓 栈(链式存储)C++

1.数据类型:栈
2.存储方式:链式存储
3.常用名称:链栈



(注:图片截取自《数据结构与算法》-青岛大学王卓bilibili视频)

/*链栈数据结构:栈 线性表存储类型:链式存储
*/#include<iostream>
using namespace std;#define MAX_SIZE 100
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;  // Status是函数的类型,其值是函数结果状态代码
typedef int SElemType;  // 根据自己的数据类型进行定义// 链栈结构体
typedef struct StackNode
{SElemType data;struct StackNode* next;
}StackNode, *LinkStack;// 初始化
Status InitStack(LinkStack& S)
{S = NULL;     // 构造一个空栈,栈顶指针置为空return OK;
}// 是否为空
Status StackEmpty(LinkStack S)
{if (S == NULL) return TRUE;else return FALSE;
}// 链栈的入栈
Status Push(LinkStack& S, SElemType e)
{StackNode* p = new StackNode; // 生成新的结点pp->data = e;                  // 将数据加载到p的数据域p->next = S;                  // 将新结点插入栈顶; 因为S中存放的地址即下一结点的地址S = p;                           // 修改栈顶指针return OK;
}// 链栈的出栈
Status Pop(LinkStack& S, SElemType& e)
{if (S == NULL) return ERROR;e = S->data;LinkStack p = S;        // 将S的指针指向放入临时变量p中,否则链表丢失S = S->next;            // 将S指针指向下一个结点delete p;             // 释放preturn OK;
}// 取栈顶元素
SElemType GetTop(LinkStack S)
{if (S != NULL) return S->data;
}int main()
{LinkStack S;   InitStack(S);Push(S, 10);Push(S, 30);Push(S, 50);Push(S, 60);int e;while (S!=NULL){Pop(S, e);cout << e << endl;}return 0;
}

(四)《数据结构与算法》 青岛大学-王卓 链栈相关推荐

  1. 数据结构与算法 | 青岛大学 | 王卓

    来源链接:https://space.bilibili.com/40323036/video?tid=0&page=6&keyword=&order=pubdate https ...

  2. 数据结构与算法学习笔记——链栈

    数据结构与算法学习笔记(C语言) 链栈 在开始链栈的学习之前,我们先实现一下上一篇文章中提到的检查括号匹配的小程序,鉴于水平有限,本人就随便写一下代码好了,目标仅限于对功能的实现. /*用顺序栈这种数 ...

  3. 数据结构与算法基础-王卓

    文章预览: 数据结构与算法基础-王卓 第一章绪论 **1.1.1基本概念和术语** 数据 数据元素 数据项 数据对象 1.1.2基本概念和术语 1.数据结构解释 2.数据结构包括三方面内容 3.数据结 ...

  4. 数据结构与算法(C++)– 栈(Stack)

    数据结构与算法(C++)– 栈(Stack) 1.栈是什么 后进先出(Last in, First out) push 入栈,pop 出栈,top栈顶 2.栈的实现 单链表:在单链表的前端插入实现 p ...

  5. 数据结构和算法(五)--栈(Stack)

    数据结构和算法(五)–栈(Stack) 什么是栈 栈是一种特殊的线性表,只能在一端进行操作 往栈中添加元素,一般叫做push,入栈 往栈中移除元素,一般叫做pop,弹栈/出栈(只能移除栈顶元素) 栈遵 ...

  6. 03_JavaScript数据结构与算法(三)栈

    JavaScript 数据结构与算法(三)栈 数组是一个线性结构,并且可以在数组的任意位置插入和删除元素. 但是有时候,我们为了实现某些功能,必须对这种任意性加以限制. 栈和队列就是比较常见的受限的线 ...

  7. 数据结构与算法(3-1)栈(顺序栈、两栈共享空间、链栈、栈的计算器)

    目录 一.顺序栈 存储结构 总代码 二.两栈共享空间 存储结构: 总代码: 三.链栈 存储结构: 总代码: 一.顺序栈 存储结构: 栈特点:先进后出,后进先出.(特殊的线性表) 入栈时在栈顶添加元素, ...

  8. 数据结构与算法--举例分析法- 栈的压入弹出序列

    举例分析 与上两篇问中画图方法一样,我们可以用举例模拟的方法思考分析复杂问题.当一眼不能看出问题的规律的时候,我们可以用几个具体的例子来模拟一下问题的过程.这样就和我们在程序出现问题时候的debug一 ...

  9. 数据结构和算法(03)---栈和队列(c++)

    文章目录 目录 一.栈 1.栈的基本操作 2.使用C++模板类实现栈 二.队列 1.队列的基本操作 2.循环队列 **循环队列顺序存储** **循环队列链式存储** 3.双端队列 目录 数据结构: 逻 ...

最新文章

  1. linux清除history历史命令:history -c
  2. Intellij IDEA自定义类注释模板
  3. 用Visual Studio 2008编写Win32汇编程序
  4. Maven服务器的使用之Maven桌面项目和Maven Web项目的创建
  5. 诺基亚9 PureView五摄机皇再曝光 低配高价毫无诚意?
  6. 使用计算机进行电路分析,计算机辅助电路分析,computer aided analysis of circuits,音标,读音,翻译,英文例句,英语词典...
  7. web打印组件康虎云报表与odoo整合示例
  8. 深入浅出Python闭包
  9. vb实现随机生成100个整数,将其中的奇数由大到小排序,偶数由小到大排序,找出其中所有素数并求和
  10. regedit是什么意思_regedit是什么意思?
  11. 【开箱即用】HTML5教程
  12. 第八届2005汕头国际音响大展
  13. 英特尔服务器新消息,又一个时代的眼泪!英特尔安腾处理器走完20年成为历史...
  14. Google卫星地图的URL计算
  15. 10章 RxJava源码分析
  16. eagle PCB软件使用心得
  17. i5 i7 Oracle,Intel Core i5/i7哪款最适合你?Intel Core i5/i7处理器简略对比评测
  18. python输入矩形的长和宽、输出矩形的面积_c语言,输入长方形的长和宽,计算长方形的周长和面积,并输出,输出结果保留2位小数...
  19. android richtext显示html,RichText Android 平台下的富文本显示控件 @codeKK Android开源站...
  20. itools苹果录屏大师_苹果怎么录屏?这两种方法值得了解

热门文章

  1. 2020Android 开发年度总结:“这一年里我到底做了些啥
  2. MHDD硬盘修复软件简介
  3. 延长数据中心使用年限的低成本方法
  4. vue 获取公网IP和地理位置
  5. Pytorch 深度学习实战教程(六):仝卓自爆,快本打码。
  6. java实现老鼠迷宫游戏
  7. vue自带开发环境,生产环境,自己搭建测试环境
  8. 不知道今天吃什么?今天吃什么 API 告诉你
  9. Struts + hibernate +spring课堂笔记
  10. QT 借助 图表 实现音频频谱的绘制