数据结构【栈和队列】

这篇具有很好参考价值的文章主要介绍了数据结构【栈和队列】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第三章 栈与队列

数据结构【栈和队列】,数据结构

一、栈
1.定义:只允许一端进行插入和删除的线性表,结构与手枪的弹夹差不多,可以作为实现递归函数(调用和返回都是后进先出)调用的一种数据结构;

  • 栈顶:允许插入删除的那端;
  • 栈底:固定的,不允许插入或删除;
  • 空栈:不含元素;

2.特点:后进先出;
3.操作:入栈(push)、出栈(pop)
4.应用:递归、进制转换、迷宫求解、括号匹配。
5.栈的顺序存储(顺序栈)

  • 定义:利用一组地址连续的存储单位存放自栈底到栈顶的数据元素,同时用一指针指示栈顶位置;
  • 栈顶指针:S.top,初始值=-1,栈顶元素S.data[S.top]; 进栈操作:栈不满时,栈顶指针+1,再送栈到栈顶元素;
  • 出栈操作:栈非空时,先取栈顶元素值,再将栈顶指针-1;
  • 栈空条件:S.top=-1;栈满条件:S.top==MaxSize-1;栈长:S.top+1。
    6.共享栈
  • 定义:两共享栈共享一个一维数组空间,两个栈顶指针都指向栈顶元素,top=-1时0号栈为空,top1=MaxSize时1号栈为空;当两栈指针相邻top1-top0=1时,满栈;共享栈是为了更好的利用存储空间,两个栈的空间相互调节,只有整个存储空间都被占满时才发生上溢。
    数据结构【栈和队列】,数据结构

7.链栈

  • 定义:采用链式存储的栈,便于多个栈共享存储空间和提高效率,且不存在栈满上溢问题,采用单链表实现,所有操作都在单链表表头进行,操作与链表相似;

二、队列
1.定义:简称队,一种操作受限制的线性表,只允许在表的一端插入,在表另一端删除。

  • 队头:允许删除的一端,队头指针指向队头元素;
  • 队尾:允许插入的一端,队尾指针指向队尾元素下一个位置;
  • 空队列:无元素 ;
  • 初始条件(队空条件):Q.frontQ.rear0,front队头,rear队尾;
  • 假溢出:一维数组队列的尾指针已达到数组上界,不能入队,其实数组中还有空位置;

2.特点:先进先出(怎么进怎么出);
3.应用:缓冲区、页面替换算法;
4.操作:进队(队不满时,先送值到队尾元素,队尾指针+1);出队(队不空时,先取队头元素值,队头指针+1);
5.循环队列:把存储队列元素的表从逻辑上看成一个环,循环队列的引入是为了防止假溢出;
数据结构【栈和队列】,数据结构

  • 初始时:Q.front=Q.rear=0;
  • 队首指针进1(出队):Q.front=(Q.front+1)%MaxSize;
  • 队尾指针进1(入队):Q.rear=(Q.rear+1)%MaxSize;
  • 队列长度(队列中元素个数):(Q.rear-Q.front+MaxSize)%MaxSize【(尾-头+M)%M】;
  • 队空:Q.frontQ.rear0;
  • 队满:(Q.rear+1)%MaxSize==Q.front;
  • 出队入队指针按顺时针进1;
  • 例题:循环队列存储在数组A[0…n]中,则入队操作为rear=(rear+1)mod(n+1)。
    6.链队列:同时带队头指针和队尾指针的单链表,无假溢出现象;
    数据结构【栈和队列】,数据结构

7.双端队列:允许两边都可以入队和出队。文章来源地址https://www.toymoban.com/news/detail-607343.html

到了这里,关于数据结构【栈和队列】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构--栈和队列

    栈是一种常见的数据结构,它遵循 后进先出LIFO (Last In First Out)的原则。 进行数据插入和操作的一端称为栈顶,另一端称为栈底 。 压栈 :栈的插入操作被称为压栈/进栈/入栈,入数据在栈顶。 出栈 :栈的删除操作。出数据也在栈顶; 栈可以用 数组 或者是 链表 来实现;

    2024年02月09日
    浏览(36)
  • 数据结构【栈和队列】

    一、栈 1.定义:只允许一端进行插入和删除的线性表,结构与手枪的弹夹差不多,可以作为实现递归函数(调用和返回都是后进先出)调用的一种数据结构; 栈顶:允许插入删除的那端; 栈底:固定的,不允许插入或删除; 空栈:不含元素; 2.特点:后进先出; 3.操作:入

    2024年02月15日
    浏览(44)
  • 数据结构 | 栈和队列

    … 📘📖📃本文已收录至:数据结构 | C语言 更多知识尽在此专栏中! 栈(Stack) 又名堆栈,它是一种运算受限的线性表,限定仅在表尾进行插入和删除操作的线性表。 队列(Queue) 也是一种特殊的线性表,特殊之处在于它只允许在表的前端(Front)进行删除操作,而在表的

    2024年01月23日
    浏览(39)
  • [数据结构】栈和队列

    目录 1.栈 1.1概念 1.2 栈的使用 1.3.栈的模拟实现 2.队列 2.1概念 2.2队列的使用 2.3队列的模拟实现 2.4 循环队列 2.5双端队列   栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素

    2024年02月07日
    浏览(38)
  • 【数据结构】栈和队列(链表模拟队列)

      学习本章节必须具备 单链表的前置知识, 建议提前学习:点击链接学习:单链表各种功能函数 细节 详解 本章节是学习用 单链表模拟队列 1. 单链表实现队列 思路如下 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先 进先出

    2024年04月27日
    浏览(39)
  • 数据结构3:栈和队列

    目录 1.栈 1.1栈的概念及结构 ​1.2栈的实现 2.队列 2.1队列的概念及结构  2.2队列的实现 2.3循环队列 ​3.栈和队列的面试题 4.概念选择题 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除的一端称为栈顶,另一端称为栈底。 栈中数

    2023年04月27日
    浏览(36)
  • 【数据结构】栈和队列(栈篇)

    目录 1.栈的概念及结构 2.栈的实现 2.1栈的结构体定义 2.2栈的常用接口函数 🐾栈的初始化 🐾插入数据 🐾删除数据 🐾取栈顶元素 🐾判断栈是否为空 🐾计算栈的大小 🐾栈的销毁 2.3完整的代码  3.与栈有关的面试题 栈: 一种特殊的线性表,其只允许在固定的一端进行插入

    2024年02月12日
    浏览(35)
  • 【数据结构】2.栈和队列

    【数据结构】1.线性表的数组描述和链式描述 - imXuan - 博客园 (cnblogs.com) 【数据结构】1.线性表的数组描述和链式描述 - imXuan - 博客园 (cnblogs.com) 队列由一个数组来描述,队首指针是队首的前一个元素,队尾指针是队尾所在元素,当队首和队尾指针重叠时表示队列为空;当 (队

    2024年02月08日
    浏览(36)
  • 考研数据结构--栈和队列

    内容 栈 :栈的抽象数据类型定义、栈的存储表示及基本操作实现、栈的应用 栈的定义(特点) 栈是一种后进先出(LIFO)的线性表,只能在一端进行插入和删除操作,这一端称为栈顶,另一端称为栈底。 打个比方: 有一个胡同很窄只能通过一辆车,而且是死胡同,只能从胡

    2023年04月19日
    浏览(38)
  • 数据结构栈和队列

    3.1栈和队列的定义和特点 栈和队列是两种常用的、重要的数据结构 栈和队列是限定插入和删除只能在表的 “ 端点 ”进行的 线性表 栈和队列是线性表的子集(是插入和删除位置受限的线性表) 栈的应用: ​ 由于栈的操作具有 后进先出 的固有特性,使得栈成为程序设计中

    2024年02月16日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包