队列的基本概念

队列也是数据结构的一种。队列在我们生活中非常的常见,比如说,当我们去超市买东西时,若是人非常的多,那么我们在收银台就要排队付账,那么先来排队的人就可以先付账离开,而后来的人就要排在队伍的尾部等待。这样的方式其实就是队列的典型运用。

队列的最显著特点:只允许在队列的头部进行删除操作,只允许在队列的尾部进行插入操作。而这种方式被称作是“先进先出”方式,简称“FIFO”,也就是First In First Out。

接下来是队列的抽象数据类型。以下摘自书本。

ADT 队列(Queue)

Data
    同线性表,元素具有相同的类型,相邻元素具有前驱和后继的关系。
    
Operation
    InitQueue ( *Q )         : 初始化操作,建立一个空队列Q
    DestroyQueue ( *Q )      : 若队列Q存在则销毁它
    ClearQueen ( *Q )        : 将队列Q清空
    QueueEmpty ( Q )         : 若队列Q为空,则返回true,否则返回false
    GetHead ( Q, *e )        : 若队列存在且非空,用e返回队列Q的队头元素
    EnQueue ( *Q, e )        : 若队列Q存在,插入新元素e到队列Q中并成为队尾元素
    DeQueue ( *Q, *e )       : 删除队列Q中队头元素,并且用e返回其值。
    QueueLength ( Q )        : 返回队列Q的元素个数
endADT
时间: 2024-10-27 05:04:52

队列的基本概念的相关文章

【数据结构】队列的基本概念

1. 队列的定义 (1) 定义 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. (2) 抽象数据类型 ADT 队列(Queue)Data 同线性表.元素具有相同的类型,相邻元素具有前驱和后继关系.Operation InitQueue(*Q):初始化操作,建立一个空队列Q: DestoryQueue(*Q):若队列Q存在,则销毁它: ClearQueue(*Q):将队列Q清空: QueueEmpty(Q):若队列Q为空,返回true,否则返回false: GetH

并发无锁队列学习(概念介绍)

1.前言 队列在计算机中非常重要的一种数据结构,尤其在操作系统中.队列典型的特征是先进先出(FIFO),符合流水线业务流程.在进程间通信.网络通信之间经常采用队列做缓存,缓解数据处理压力.结合自己在工作中遇到的队列问题,总结一下对不同场景下的队列实现.根据操作队列的场景分为:单生产者--单消费者.多生产者--单消费者.单生产者--多消费者.多生产者--多消费者四大模型.其实后面三种的队列,可以归纳为一种多对多.根据队列中数据分为:队列中的数据是定长的.队列中的数据是变长的. 2.队列操作模型 (

一些关于队列,同步,异步的概念

进程:正在进行的程序,我们就叫它进程. 线程:线程就是进程中的一个独立的执行路径.这句话怎么理解呢! 一个程序它是按顺序从上往下执行的, 这个执行顺序我们可以把它看成是一条线,把这条线就叫做线程(个人理解,错了勿喷);每一个程序中至少包含一条线程, 这条线程,我们叫它主线程. 多线程:多线程也就是说一个程序中有多条执行路径.在iOS当中将一些比较耗时的操作放到另一条执行路径里.让它与主线程同时运行.这样不会造成主线程的堵塞. 扯完了这些那我们来看看什么是任务,什么是队列! 任务分为同步任务与异步

消息队列学习一 概念

消息中间件随着分布式系统的发展变得越来越火,下面就学习课程过程对消息中间件进行解释 概念:(部分内容引用自:享学课堂课件) 其实并没有标准定义.一般认为,消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布 式系统中的其余各个子系统进行集成. 高效:对于消息的处理处理速度快. 可靠:一般消息中间件都会有消息持久化机制和其他的机制确保消息不丢失. 异步:指发送完一个请求,不需要等待返回,随时可以再发送下一个请求,既不需要等待. 一句话总结,我们消息中间

消息队列概念与认知

本文是-消息队列学习的概念与介绍篇.目的是能够对消息队列能够有一个简单的了解和大体的认知. 参考/学习资料整理(好东西要学会分享 ) B站上的黑马ActiveMQ的视频教程 Hollis公众号上的消息队列文章 架构之家公众号上的消息队列文章 JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识的文档类项目) CS-Notes(技术面试必备基础知识) JCSprout(处于萌芽阶段的 Java 核心知识库) 一个在线绘图的工具 一.消息队列简介 消息队列 MQ(message qu

栈和队列数据结构的基本概念及其相关的Python实现

先来回顾一下栈和队列的基本概念: 相同点:从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同. 不同点:栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表. 队列(Queue)是限定只能在表的一端进行插入和在另一端进行删除操作的线性表.它们是完全不同的数据类型.除了它们各自的基本操作集不同外,主要区别是对插入和删除操作的"限定". 栈必须按"后进先出"的规则进行操作:比如说,小学老师批改学生的作业,如果不打乱作业本的顺

【POJ 2823 Sliding Window】 单调队列

题目大意:给n个数,一个长度为k(k<n)的闭区间从0滑动到n,求滑动中区间的最大值序列和最小值序列. 最大值和最小值是类似的,在此以最大值为例分析. 数据结构要求:能保存最多k个元素,快速取得最大值,更新时删去“过期”元素和“不再有希望”的元素,安放新元素. 单调队列的基本概念百度百科讲得比较清楚了:http://baike.baidu.com/view/3771451.htm 我的大致思路是: 1. 每个元素存储为结构体,包含它的秩和值.维护最大长度为k的单调队列,保证所有元素的秩都在区间内

iOS-线程之GCD方式---之同步异步和串行队列并行队列之间的关系

GCD方式是Apple官方推荐实现多线程的方式 但在这之前必须理清楚同步,异步,串行队列,并行队列之间的概念. 同步:即当前的执行程序块不会创建一个新的线程,只能在当前线程中执行. 异步:会在当前的线程之外创建一个新的线程,并在新的线程中执行代码块. 首先声明一点,队列是用来存放即将执行的线程体的. 串行队列:串行队列中的线程满足FIFO(First In First Out),并且只有在先出的线程执行完,后续的线程才能出队列执行.(很可能造成APP的假死状态) 并行队列:并行队列也满足FIFO

JavaScript实现数据结构中的队列和堆栈

今天在项目中要使用JavaScript实现数据结构中的队列和堆栈,这里做一下总结. 一.队列和堆栈的简单介绍 1.1.队列的基本概念 队列:是一种支持先进先出(FIFO)的集合,即先被插入的数据,先被取出! 如下图所示: 1.2.堆栈的基本概念 堆栈:是一种支持后进先出(LIFO)的集合,即后被插入的数据,先被取出! 如下图所示: 二. 在JavaScript中实现队列和堆栈 在JavaScript中实现队列和数组主要是通过数组,js数组中提供了以下几个方法可以让我们很方便实现队列和堆栈: sh