第 1 章之:队列的特性应用

声明:文章为博主原创,转载请联系博主。文章若有错误和疏漏之处,还望大家不吝赐教!
                                               第一章:数据结构与算法基础
===========================================================
本章重点内容为:
1.数据结构基础与线性表:下三角矩阵元素存储位置计算、队列的特性应用、栈的特性应用
2.广义表:无
3.树:二叉树的特性、二叉树的遍历、哈夫曼树
4.图:边与顶点的关系
5.查找与排序:折半查找、基数排序算法以及这些算法的性能分析
6.算法基础知识:时间复杂度分析
===========================================================
本篇文章主要介绍队列的特性应用

一.概念介绍
首先我们来简单了解一下什么是队列。队列(Queue)是一种特殊的线性表。它的特殊之处在于它只允
许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作
,和栈一样,队列是一种
操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列为空时,称为
空队列。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个
队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能
最先从队列中删除,故队列又称为先进先出(FIFO)线性表。

举个简单的例子来帮助理解:
队列好比火车站排队购票的队伍,最先排队的人最先购票,最先离开队伍,最晚排队的人最后购票,
最后离开队伍:

这样的读取数据的方式被称为先进先出(FIFO)

二.队列的应用
在面对客户资源分配问题时,便是用队列的思想来解决:最先申请的用户最先使用资源。

RoundRobin {    //循环分配器
    Queue Q(clients);       //参与资源分配的所有客户组成队列Q
    while (!ServiceClosed()) {  //在服务关闭之前,反复地
        e = Q.dequeue();    //队首的客户出队
        serve(e);           //并接受服务
        Q.enqueue(e);       //重新入队
    }
}

补充一点:在考题中,双端队列出现的频次是比较高的,下面就来简单介绍一下双端队列的概念:
双端队列(deque)是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其
限定插入和删除操作在表的两端进行
。在实际使用中,比较常见的还有输出受限的双端队列(即一
个端点允许插入和删除,另一个端点只允许插入的双端队列)和输入受限的双端队列(即一个端点允
许插入和删除,另一个端点只允许删除的双端队列)。而如果限定双端队列从某个端点插入的元素
只能从该端点删除
,则该双端队列就蜕变为两个栈底相邻的栈了,下面这道例题便考察的是这种情
况。

软考中,关于队列的常见题型是:根据给出的一组元素及其进出队列的规则,求可能的出队序列。
例题:双端队列是指在队列的两个端口都可以加入和删除元素,如下图所示。现在要求元素进队列
和出队列必须在同一端口,即从 A 端进队的元素必须从A端出、从 B 端进队的元素必须从 B 端出,
则对于 4 个元素的序列 a、b、c、d,若要求前 2 个元素(a、b)从 A 端口按次序全部进入队列,后两
个元素(c、d)从 B 端口按次序全部进入队列,则不可能得到的出队序列是( )。

A. dabc                           B. dcba                           C. badc                           D. bdca                             

答案A
解析:在前面的补充中可以知道,本题中涉及到的双端队列可以看作是两个栈底相连的栈。按照题
           目中ab全部依次从A入队,cd全部依次从B入队的要求,我们实际上得到如下两个栈底相连的
           栈:,显而易见,BCD都是可以得到的,A得不到,故选A。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值