热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

数据结构第三章栈和队列(1)定义和特点

数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序

数据结构




⚡️数据结构-第一章
⚡️抽象数据类型案例
⚡️数据结构-第二章(1)-线性结构
⚡️数据结构-第二章(2)-线性表的顺序表示和实现
⚡️数据结构-第二章(3)-顺序表(含代码)
⚡️数据结构-第二章(4)-顺序表案例(含代码)
⚡️数据结构-第二章(5)-链式存储结构
⚡️数据结构-第二章(6)-单链表基本操作的实现
⚡️数据结构-第二章(7)-双向链表和循环链表
⚡️数据结构-第二章(8)-线性表的应用(线性表合并)


数据结构-第三章-栈和队列(1)-定义和特点

  • 数据结构
  • 前言
  • 一、栈的定义和特点
  • 二、队列的定义和特点
  • 三、栈和队列的应用案例
    • 3.1 进制转换(栈)
    • 3.2 括号匹配的检验(栈)
    • 3.3 表达式求值(栈)
    • 3.4 舞伴问题(栈)
  • 总结


前言

  栈和队列是两种重要的线性结构。从数据结构角度看,栈和队列也是线性表,但她们是受限的线性表。
在这里插入图片描述
栈:只能在队尾插入,只能在队尾删除。

队列:只能在队尾插入,只能在队头删除。


  如下图,我们可以将栈想象成手电筒放电池的部分、子弹匣等,为什么呢?我们以子弹匣为例,子弹只能从弹匣尾部放入,也只能从弹匣尾部弹出。栈就是这个原理:只能从队尾插入,也只能从队尾删除。
在这里插入图片描述
  如下图,我们可以将队列想象成人在排队面试,为什么呢?你想一群人排队面试,前面的人很定先面试,也先走,来了一个人要排队,必须排在队尾,对吧。队列就是这个原理:只能从队尾插入,只能从队头删除。
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


一、栈的定义和特点

栈的定义:


  栈(stack)是限定在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾端有着特殊的含义,称为“栈顶(top)”,相应地,表头端称为栈底(bottom),不含元素的栈称为空栈。
在这里插入图片描述
在这里插入图片描述


栈的特点:


  如下图所示:栈的修改是按后进先出的原则进行的,因此栈又称为后进先出(last in first out)的线性表(简称LIFO结构)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


栈和一般线性表对比:
在这里插入图片描述


二、队列的定义和特点

队列的定义:


  和栈相反,队列(queue)是一种先进先出(first in first out)简称FIFO的线性表。它是只允许在表的一端进行插入,在另外一端删除的数据结构。
在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front)。
在这里插入图片描述
在这里插入图片描述



三、栈和队列的应用案例


3.1 进制转换(栈)


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


3.2 括号匹配的检验(栈)


在这里插入图片描述
在这里插入图片描述



3.3 表达式求值(栈)


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



3.4 舞伴问题(栈)

在这里插入图片描述


总结

期待大家和我交流,留言或者私信,一起学习,一起进步!


推荐阅读
  • 深入解析Java并发之ArrayBlockingQueue
    本文详细探讨了ArrayBlockingQueue,这是一种基于数组实现的阻塞队列。ArrayBlockingQueue在初始化时需要指定容量,因此它是一个有界的阻塞队列。文章不仅介绍了其基本概念和数据结构,还深入分析了其源码实现,包括各种入队、出队、获取元素和删除元素的方法。 ... [详细]
  • 本文探讨了如何在Linux系统中利用iptables和NFQUEUE处理来自镜像端口的流量。当镜像端口的数据包目的MAC地址与主机MAC地址不符时,通常会导致流量无法被NFQUEUE捕获。文章提供了解决这一问题的方法。 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • LeetCode 102 - 二叉树层次遍历详解
    本文详细解析了LeetCode第102题——二叉树的层次遍历问题,提供了C++语言的实现代码,并对算法的核心思想和具体步骤进行了深入讲解。 ... [详细]
  • 深入理解线程池及其基本实现
    本文探讨了线程池的概念、优势及其在Java中的应用。通过实例分析不同类型的线程池,并指导如何构建一个简易的线程池。 ... [详细]
  • Jenkins API当前未直接提供获取任务构建队列长度的功能,因此需要通过解析HTML页面来间接实现这一需求。 ... [详细]
  • 题目描述:计算从起点到终点的最小能量消耗。如果下一个单元格的风向与当前单元格相同,则消耗为0,否则为1。共有8个可能的方向。 ... [详细]
  • 本文详细探讨了HihoCoder平台上的1398号问题——最大权闭合子图的求解方法。通过具体实例,深入分析了最大权闭合子图的概念及其算法实现。 ... [详细]
  • 一家位于长沙的知名网络安全企业,现面向全国诚聘高级后端开发工程师,特别欢迎具有一线城市经验的技术精英回归故乡,共创辉煌。 ... [详细]
  • 春季职场跃迁指南:如何高效利用金三银四跳槽季
    随着每年的‘金三银四’跳槽高峰期的到来,许多职场人士都开始考虑是否应该寻找新的职业机会。本文将探讨如何制定有效的职业规划、撰写吸引人的简历以及掌握面试技巧,助您在这关键时期成功实现职场跃迁。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 洛谷 P4009 汽车加油行驶问题 解析
    探讨了经典算法题目——汽车加油行驶问题,通过网络流和费用流的视角,深入解析了该问题的解决方案。本文将详细阐述如何利用最短路径算法解决这一问题,并提供详细的代码实现。 ... [详细]
  • 在开发iOS应用时,面对不同状态(如数据加载成功、无数据、未登录、网络异常等)的界面管理,如何实现既高效又美观的用户体验?本文探讨了几种最佳实践方法。 ... [详细]
  • 管理UINavigationController中的手势返回 - Managing Swipe Back Gestures in UINavigationController
    本文介绍了如何在一个简单的闪存卡片应用中实现平滑的手势返回功能,以增强用户体验。 ... [详细]
  • 本文探讨了在UIScrollView上嵌入Webview时遇到的一个常见问题:点击图片放大并返回后,Webview无法立即滑动。我们将分析问题原因,并提供有效的解决方案。 ... [详细]
author-avatar
laosiji
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有