数据结构基础:栈和队列学习笔记
1、栈
1.1 栈的定义
栈是只能通过访问它的一端来实现数据的存储和检索的一种特殊的线性数据结构。栈的修改要遵循先进后出的原则,这个是栈的核心。在栈中进行插入和删除操作的一端称为栈顶(Top)。另一端被称为栈底(bottom)。不包含任何元素的栈称为空栈。
1.1.1 栈的运算
1.2 栈的存储结构
1.2.1 栈的顺序存储
栈的顺序存储是指用一组地址连续的存储单元依次存储自栈顶到栈底的数据元素,同时附设置指针top指示栈顶元素的位置。顺序存储的栈也被称为顺序栈。这种存储方式,需要预先定义或申请栈的存储空间,所以顺序栈的空间容量是有限的。在入栈的时候要判断是否栈满的情况。否则会出现上溢的异常。
1.2.2 栈的链式存储
为了解决顺序栈可能存在上溢的不足,可以用链表存储栈中的元素。链式存储的栈也被称为链栈。元素的插入、删除操作仅能在栈顶一端进行。因此可以不必设置头节点。
1.2.3 栈的用途
栈的典型应用包括表达式求值、括号匹配等。在编程领域实现将递归过程转变为非递归过程的处理中,栈可以起到重要作用。还可以实现数据的逆向输出。
2、队列
2.1 队列的定义
队列是一种先进先出的线性表,它只允许在表的一端插入元素,在表的另一端删除元素。在队列中,允许插入元素的一端称为队尾(Rear),允许删除元素的一端称为队头(Front)
2.2 队列的基本运算
2.2 队列的存储结构
2.2.1 队列的顺序存储
利用一组地址连续的存储单元存放队列中的元素。由于队列中的元素插入和删除限定在两端进行,因此设置队头指针和队尾指针需要分别指示当前的队头元素和队尾元素。顺序队列的存储空间是提前设定好的,因此队尾指针会有一个上限值,达到上限就不能够再入队操作了。需要等队头有元素被移除。这个和日常买东西排队是很相似的,比如买东西限定排队人数为20人,如果当前已经排满了,此时工作人员会阻止你的排队行为,直到第一个买东西离开后,你就就可以继续排队了。判断顺序队列位空队列的方法是队头和队尾的值相同。
注意:针对空队列要能区分队头队尾元素,可以通过标识位来区分队头和队尾元素的不同。
2.2.2 队列的链式存储
队列的链式存储称为链队列。链队列判断是否位空队列的条件是值相同并且均指向头节点。
2.3 队列的用途
队列常用于需要排队的场合,比如打印机打印文件、离散事件的计算机模拟、消息队列、定时任务等方面。
IT技术分享社区
个人博客网站:https://programmerblog.xyz
文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识
数据结构基础:栈和队列学习笔记相关推荐
- 数据结构基础:树结构的学习笔记
1.树的定义 树是n(n>=0)个节点的有限集合.当n=0时称为空树,当n>0 为非空树,任何非空树中,有且仅有一个根节点:其余节点可分为m(m>=0)个互不相交的有限集合T1.T2 ...
- 数据结构基础:线性表学习笔记
1.线性表定义 线性表是指n个元素的有限序列(n>=0),通常用(a1,a2,a3...,an),来表示. 2.线性表特点 1.存在唯一的一个首元素 2.存在唯一一个尾元素 3.除第首元素外,每 ...
- 10.数据结构:栈和队列
大家好,我王有志又回来啦.关注王有志,回复DSA获取数据结构和算法学习资源. 最近被全链路优化搞得焦头烂额,等抽出时间来和大家分享下我司正在做的"全面提速工程". 今天我们来学习线 ...
- 【数据结构】栈、队列、堆的python实现
[数据结构]栈.队列.堆的python实现 一.栈的python实现 1.1.栈的列表实现方法 1.2.用双向队列模拟栈 二.队列的python实现 2.1.队列的列表实现 2.2.使用deque实现 ...
- 计算机 运行新ie 命令,(新)计算机应用基础IE浏览器设置学习笔记——精品.doc
计算机应用基础IE浏览器设置学习笔记 一.IE浏览器设置简介 Internet Explorer浏览器(简称IE浏览器)是能够接收用户的请求信息,并到相应网站获取网页内容的专用软件.IE浏览器的使用和 ...
- 【六更完结!由于字数限制开新文章继续】零基础信号与系统学习笔记:复指数信号、傅里叶级数的系数推导、三角函数正交性、离散傅里叶变换、相位补偿、z变换表、逆变换表、常见序列及其作用
零基础信号与系统学习笔记:复指数信号.傅里叶变换.三角函数正交性 基础1:复指数信号 复指数信号基础知识 复指数信号推导1 虚指数信号 虚指数信号特性和作用 直流信号 基础2:傅里叶级数 推导傅里叶级 ...
- C语言【数据结构】栈和队列【OJ题(C++)、选择题】
目录 一.OJ题 1.225. 用队列实现栈 2.232. 用栈实现队列 3.622. 设计循环队列 4.20. 有效的括号 二.选择题 1.下列关于栈的叙述正确的是(B) 2.一个栈的入栈序列为AB ...
- 数据结构~07.栈和队列的基本概念
数据结构~07.栈和队列的基本概念 本文是上一篇文章的后续,详情点击该链接~ 栈的定义: 栈是一种只能在一端进行插入或删除的线性表.其中,允许插入或删除的一端为栈顶(TOP).栈顶由一个称为栈顶指针的 ...
- Python基础教程-菜鸟教程学习笔记1
Python基础教程-菜鸟教程学习笔记1 文章目录 Python基础教程-菜鸟教程学习笔记1 前言 Python 简介 1. 第一个Python程序 2. Python 中文编码 3. 基本语法 1) ...
最新文章
- 【深度学习】深入浅出对抗机器学习(AI攻防)
- ruby动态new对象
- scala 数据类型体系一览图
- java excel 导入 加校验_POI实现excel各种验证和导入的思路总结
- 【Dart学习】-- Dart之泛型
- xshell安装步骤
- [BZOJ1860][ZJOI2006]Mahjong(DP)
- python百度关键词相关搜索采集,链轮查询采集相关关键词工具exe
- 微信小程序实现tab选项卡
- “拼命”奔跑的社区团购
- 华北理工大学计算机考研怎么样,华北理工大学考研难吗
- Texmacs中文支持
- python pandas向已有excel添加新表sheet/添加数据
- Power Apps 应用实战|轻松用 Power Apps 开发员工休假考勤管理小程序
- arcgis for js4二维地图比例尺
- 如何登录锐捷设备(网关篇)
- blob导出的excel文件打不开,responseType: “blob“ 但 response回应类型不是blob类型,response.data是乱码。
- 最新《微专业Android安卓开发工程师课程》
- 计算机组成原理概念学习DAY7——外围设备
- 期初余额录入功能暂时不能执行
热门文章
- 苏州飘“彩云” 五年规模破百亿元
- C#如何打包EXE程序生成setup安装文件
- 浅析软件项目管理中十个误区(来自:http://manager.csdn.net/n/20051213/30907.html)
- 最优化课堂笔记05——一维最优化方法(含重点:黄金分割法)
- python之33个关键字详解_Python解析、提取url关键字的实例详解
- javafx如何调节按钮位置_安全带高度调节器的小知识
- java高并发实战Netty+协程(Fiber)|系列1|事件驱动模式和零拷贝
- 使用ASP.Net WebAPI构建REST服务(一)——简单的示例
- 201671010435-王潇-实验四附加实验-项目互评
- session-cookie 和token登录验证