一、栈

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、队列在层次遍历中的应用

数据结构之栈和队列(顺序栈、链栈、循环队列)相关推荐

  1. 循环队列c语言的实现,循环队列的C语言实现

    生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题:从生活中,可以抽象出队列的概念,队列就是一个能够实现"先进先出"的存储结构 ...

  2. Day 64 栈的顺序和链式存储 队列

    1.栈的概念: 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把 ...

  3. 【笔记 】栈底层 循环队列的处理 链栈 链队列

    栈 队列 解决"假溢出"问题的方法: 采用循环队列方式:将数组的头尾看作是相邻的元素, 即将元素data[0]看作是data[maxlen-1]的下一个元素.如图所示. 因此,插入 ...

  4. C语言丨栈(二):链栈

    栈是限定仅在表尾进行插入或删除操作的线性表,表尾称为栈顶(top),表头称为栈底(bottom).栈的最主要特点就是"先进后出"(FILO),或"后进先出"(L ...

  5. 解决顺序表实现队列的假溢出的循环队列

    循环队列的参考视频:https://www.bilibili.com/video/BV1nJ411V7bd?p=60 问题:什么是顺序队列的假溢出? 从队首倒到队尾完全占用了分配的空间,是溢出.相反, ...

  6. 顺序循环队列类c#语言,C#--循环队列的顺序存储

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  7. c语言循环队列的销毁,C语言循环队列

    参考自维基百科: 含测试代码,详细注释: #include #include #include /*循环队列 C语言实现 *2011-04-28 *liliming123@sina.com */ #i ...

  8. 【数据结构】 实验报告10 顺序、链式存储结构的二叉树递归遍历、层次遍历求高度

    一.实验目的和要求 (源码在最后) 要求: 两种及以上存储结构(建议 顺序存储结构和链式存储结构各一).两种及以上方法(建议 递归遍历和层次遍历方法各一).分析各代码性能. 抽象数据类型(二叉树)独立 ...

  9. (王道408考研数据结构)第三章栈和队列-第二节:队列基本概念、顺序栈和链栈基本操作

    文章目录 一:队列基本概念 (1)队列的定义 (2)入队和出队 (3)队列的操作 二:队列的顺序存储结构(循环队列)及其操作实现 (1)单纯的顺序存储的不足之处及font指针和rear指针 (2)循环 ...

  10. 【Python数据结构系列】❤️《栈(顺序栈与链栈)》——❤️知识点讲解+代码实现

    灵魂拷问:为什么要学数据结构? 数据结构,直白地理解,就是研究数据的存储方式.数据存储只有一个目的,即为了方便后期对数据的再利用.因此,数据在计算机存储空间的存放,决不是胡乱的,这就要求我们选择一种好 ...

最新文章

  1. ASP.NET格式化日期
  2. 我的家庭私有云计划-16
  3. (2)神经网络编程基础
  4. 三步搭建Spring Cloud 服务注册
  5. 电脑wifi不见了_大家好,我是来给你家 WiFi 提速的
  6. 虚拟机virtualBox
  7. 服务器***处理三则
  8. 如何将小工具添加回Windows 8和10(以及为什么您不应该这样做)
  9. 后端向前端返回图片URL,并向后端传递base64格式URL
  10. VOT 数据集 groundtruth 8个维度 转成 4个维度的方法
  11. mysql reopen table_mysql 临时表 cann''t reopen解决方案
  12. 网络编程 3 tcp通信
  13. python手记(四):pillow(四) ImageDraw模块 图片绘制(图片上自定义绘制)
  14. Windows10 pc使用Apple Studio Display显示器设置
  15. 吃饭咯 干锅肥肠 + 掌中宝!
  16. (面试必备)软件测试人员必备Linux命令操作(根据菜鸟教程整理更易查阅)
  17. Happytime RTSP Pusher,命令行工具提供
  18. Python OpenCV 之图像乘除与像素的逻辑运算,图像处理取经之旅第 17 天
  19. 如何完成网课公号号搭建——小白教程!内附网课题库接口
  20. 大厂面试算法(一)动态规划问题

热门文章

  1. 基于车牌形状和颜色的车牌定位
  2. 求两函数交点c语言,怎样求两个函数关系式的交点坐标
  3. 好用又好玩的微信小程序大全
  4. LSB信息隐藏的卡方分析
  5. 共享计算机后无法访问磁盘,win7局域网怎么共享整个硬盘,如D盘E盘F盘等等-win7怎么共享磁盘,win7共享后无权限访问...
  6. R语言爬虫:贝壳网租房信息
  7. 还原永恒之蓝下载器PS脚本混淆
  8. Win10投影到此电脑用不了
  9. wps表格怎么添加附页_关于WPS里面页码的问题
  10. org.apache.jasper.JasperException: /app/jsonp.jsp(1,2) Page-encoding specified in jsp-property-grou