数据结构之栈和队列(顺序栈、链栈、循环队列)
一、栈
1、栈以及栈的基本操作
(1)栈:只允许在一端进行插入或删除操作的线性表。特点:先进后出。
栈顶:允许进行插入删除。
栈底:不允许进行插入和删除,固定的。
(2)栈的基本操作
2、栈的顺序存储结构
(1)顺序栈的实现
(2)顺序栈的基本操作
顺序栈的基本运算:
(3)共享栈:栈底位置相对不变,两个顺序栈共享一个一维数组空间,将两个栈底分布设置在两端,两个栈顶向共享空间的中间延伸。
栈空:top0=-1,top1=maxsize
栈满:top1=top0+1
进栈:s.data[++top0],s.data[–top1]
出栈:s.data[top0–],s.data[top1++]
3、栈的链式存储结构
链栈的操作与链表类似,通常采用单链表,入栈和出栈的操作都是在链表的表头进行。
二、队列
1、队列和队列的基本操作
(1)队列:也是一种操作受限的线性表,只允许在表的一端进行插入,在表的另一端进行删除。
队头:允许删除的一端,出队。
队尾:允许插入的一端,入队。
(2)队列的基本操作
2、队列的顺序存储结构
(1)队列的顺序存储
注意:不能用Q.rear==Maxsize作为队满的条件,队列中可能会产生假溢出情况。
(2)循环队列
由于顺序队列可能会产生假溢出情况,所以引出了循环队列解决这个问题。把存储队列元素的表从逻辑上视为一个环。
为了区分队空还是队满,牺牲一个存储位置不存储元素。
(3)循环队列的操作
3、队列的链式存储结构
(1)队列的链式存储:同时带有队头指针和队尾指针的单链表。头指针指向队头结点,尾指针指向队尾结点。
(2)链式队列的基本操作
4、双端队列
双端队列:指允许两端都可以进行入队和出队操作的队列。
三、栈和队列的应用
1、栈在括号匹配中的应用
2、栈在表达式求值中的应用
(1)中缀表达式转后缀表达式
A+B*(C-D)-E/F —> ABCD-*+EF/-
(2)后缀表达式转中缀表达式
ABCD-+EF/- —> A+B(C-D)-E/F
3、栈在递归中的应用
4、队列在层次遍历中的应用
数据结构之栈和队列(顺序栈、链栈、循环队列)相关推荐
- 循环队列c语言的实现,循环队列的C语言实现
生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题:从生活中,可以抽象出队列的概念,队列就是一个能够实现"先进先出"的存储结构 ...
- Day 64 栈的顺序和链式存储 队列
1.栈的概念: 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把 ...
- 【笔记 】栈底层 循环队列的处理 链栈 链队列
栈 队列 解决"假溢出"问题的方法: 采用循环队列方式:将数组的头尾看作是相邻的元素, 即将元素data[0]看作是data[maxlen-1]的下一个元素.如图所示. 因此,插入 ...
- C语言丨栈(二):链栈
栈是限定仅在表尾进行插入或删除操作的线性表,表尾称为栈顶(top),表头称为栈底(bottom).栈的最主要特点就是"先进后出"(FILO),或"后进先出"(L ...
- 解决顺序表实现队列的假溢出的循环队列
循环队列的参考视频:https://www.bilibili.com/video/BV1nJ411V7bd?p=60 问题:什么是顺序队列的假溢出? 从队首倒到队尾完全占用了分配的空间,是溢出.相反, ...
- 顺序循环队列类c#语言,C#--循环队列的顺序存储
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- c语言循环队列的销毁,C语言循环队列
参考自维基百科: 含测试代码,详细注释: #include #include #include /*循环队列 C语言实现 *2011-04-28 *liliming123@sina.com */ #i ...
- 【数据结构】 实验报告10 顺序、链式存储结构的二叉树递归遍历、层次遍历求高度
一.实验目的和要求 (源码在最后) 要求: 两种及以上存储结构(建议 顺序存储结构和链式存储结构各一).两种及以上方法(建议 递归遍历和层次遍历方法各一).分析各代码性能. 抽象数据类型(二叉树)独立 ...
- (王道408考研数据结构)第三章栈和队列-第二节:队列基本概念、顺序栈和链栈基本操作
文章目录 一:队列基本概念 (1)队列的定义 (2)入队和出队 (3)队列的操作 二:队列的顺序存储结构(循环队列)及其操作实现 (1)单纯的顺序存储的不足之处及font指针和rear指针 (2)循环 ...
- 【Python数据结构系列】❤️《栈(顺序栈与链栈)》——❤️知识点讲解+代码实现
灵魂拷问:为什么要学数据结构? 数据结构,直白地理解,就是研究数据的存储方式.数据存储只有一个目的,即为了方便后期对数据的再利用.因此,数据在计算机存储空间的存放,决不是胡乱的,这就要求我们选择一种好 ...
最新文章
- ASP.NET格式化日期
- 我的家庭私有云计划-16
- (2)神经网络编程基础
- 三步搭建Spring Cloud 服务注册
- 电脑wifi不见了_大家好,我是来给你家 WiFi 提速的
- 虚拟机virtualBox
- 服务器***处理三则
- 如何将小工具添加回Windows 8和10(以及为什么您不应该这样做)
- 后端向前端返回图片URL,并向后端传递base64格式URL
- VOT 数据集 groundtruth 8个维度 转成 4个维度的方法
- mysql reopen table_mysql 临时表 cann''t reopen解决方案
- 网络编程 3 tcp通信
- python手记(四):pillow(四) ImageDraw模块 图片绘制(图片上自定义绘制)
- Windows10 pc使用Apple Studio Display显示器设置
- 吃饭咯 干锅肥肠 + 掌中宝!
- (面试必备)软件测试人员必备Linux命令操作(根据菜鸟教程整理更易查阅)
- Happytime RTSP Pusher,命令行工具提供
- Python OpenCV 之图像乘除与像素的逻辑运算,图像处理取经之旅第 17 天
- 如何完成网课公号号搭建——小白教程!内附网课题库接口
- 大厂面试算法(一)动态规划问题
热门文章
- 基于车牌形状和颜色的车牌定位
- 求两函数交点c语言,怎样求两个函数关系式的交点坐标
- 好用又好玩的微信小程序大全
- LSB信息隐藏的卡方分析
- 共享计算机后无法访问磁盘,win7局域网怎么共享整个硬盘,如D盘E盘F盘等等-win7怎么共享磁盘,win7共享后无权限访问...
- R语言爬虫:贝壳网租房信息
- 还原永恒之蓝下载器PS脚本混淆
- Win10投影到此电脑用不了
- wps表格怎么添加附页_关于WPS里面页码的问题
- org.apache.jasper.JasperException: /app/jsonp.jsp(1,2) Page-encoding specified in jsp-property-grou