当前课程知识点:数据结构(Data Structures) >  2. List >  2.11 Queue >  Video

返回《数据结构(Data Structures)》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《数据结构(Data Structures)》慕课在线视频列表

Video课程教案、知识点、字幕

大家好

在前面我们已经学习了

栈这种特殊的列表结构

下面我们将继续学习另外一种特殊的列表

队列Queue

那么队列在我们日常生活中

是非常常见的

当我们去排队去做某件事情的时候

就自然而然地形成了一条队列

比如我们排队去买火车票

排在队头的人

将会优先接受这个服务

并且优先离开队列

而后面到来的人

就只能排在队列的末端

而不能够随意地插入到中间的位置

这种常见的结构蕴含着先到先服务

先服务先离开的公平性原则

也就是所谓的FIFO性质

First In Firt Out

最先到来的最先离开

那么对这种常见的队列结构

又应当如何去定义

并且去实现它呢

严格意义上来说

队列它也是一种特殊的列表

它的特殊性体现在

数据的插入和删除的过程

那么在队列中插入数据

是在队列的一端来进行的

而删除则是在队列的另外一端

就像我们前面看到的

生活中的队列例子一样

队列它具有FIFO性质

也就是先进先出的性质

在队列中有一些常见的术语

我们需要了解一下

一个是在队列中插入数据的过程

我们通常称为叫入队

也就是enqueue

而在队列中删除数据的过程

我们叫出队

也叫dequeue

在队列中删除元素的一端

我们称为叫队头

而插入元素的一端我们称为叫队尾

下面我们来看一下队列这个数据结构的

ADT描述

我们可以用一个C++抽象类Queue

来去定义队列的ADT

在这个抽象类中

我们定义了一些常见的操作

首先最常见的是入队操作enqueue

这个函数会把参数e加入到队列中去

和enqueue相对应的是dequeue操作

它将会从队头取出一个元素

并且把它的值记录在引用参数e中

frontValue函数

是读取队头元素的值

然后记录在e中

这个函数和dequeue不同

它不会对这个队列造成任何的改变

最后是length函数

返回队列的长度

clear函数清空队列

下面我们来看一下如何去实现队列

既然队列是一种特殊的列表

那么和列表的实现是相类似的

我们也可以用数组或者是链表来去实现它

这里我们将重点讲一下

比较常见的链表的实现方式

基于链表的实现方式其实非常简单

我们只需要去定义一条链表

然后约定这个链表的一端作为队头

而另外一端作为队尾

为了方便在队头的地方删除元素

我们通常定义链表的第一个元素作为队头

而定义链表的最后一个元素作为队尾

当我们对这个队列

执行dequeue操作的时候

我们只需要取出head

也就是队头它所指向的这个元素就可以了

然后我们去修改head指针

让它指向head后面这个结点

当我们对队列执行enqueue操作的时候

我们就可以去创建一个新的结点

用来去存放入队的元素

然后让原来队尾结点的next指针

去指向这个新结点就可以了

最后别忘了要去修改tail指针

让它去指向新插入的结点

具体的实现我们在这里

就不再去详细地叙述了

大家可以去参考前面的链表的实现

然后在链表的基础上做一些简单的修改

就可以满足这个要求

队列它有着非常广泛的应用

下面我们来看一些具体的例子

比如我们的计算机和外围设备

在一起工作的时候

往往计算机输出的速度

要远远大于外围设备

它所能处理数据的速度

那么当计算机产生的数据

来不及处理的时候

我们可以把这些数据

先放入到一个缓冲区中

而外围设备将从缓冲区里面

去读取需要处理的数据

这里的缓冲区它其实就是一种队列结构

因为先进入缓冲区的数据

将会被优先取出来

又比如在操作系统中

所广泛采用的消息队列

消息队列可以使得不同的软件组件

异步地进行协同工作

比如在图里面

这个B组件要去驱动A组件工作

那么B可以产生相应的调用消息

然后把这个消息放入到消息队列里面去

然后接下来它就可以继续去做其他事情

而无需等待A的确认返回

那么A组件

则不断地从队列里面去取出消息

并且进行相应的处理

那么A和B

它就以一种异步工作的方式在一起工作了

具有比较高的效率

好的 这节课我们就讲到这里

下节课我们再见

数据结构(Data Structures)课程列表:

1. Introduction

-1. Introduction--1.1 Introduction of Data

-1.1 Introduction of Data Structure

--Introduction of Data Structure

-1.2 Data Structure and A

-1.2 Data Structure and Algorithm

--Video

-1.3 Asymptotic Analysis

-1.3 Asymptotic Analysis

--Video

-1.4 Simplifying Rules of

-1.4 Simplifying Rules of Asymptotic Analysis

--Video

2. List

-2.1 Introduction of List

-2.1 Introduction of List

--Video

-2.2 Array based List

-2.2 Array based List

--Video

-2.3 Insertion Operation on Array

-2.3 Insertion Operation on Array based List

--Video

-2.4 Remove Operation on Array based List

-2.4 Remove Operation on Array based List

--Video

-2.5 Linked list

-2.5 Linked list

--Video

-2.6 Insertion Operation on Linked list

-2.6 Insertion Operation on Linked list

--Video

-2.7 Remove Operation on Linked list

-2.7 Remove Operation on Linked list

--Video

-2.8 SetPos Operation on Linked list

-2.8 SetPos Operation on Linked list

--Video

-2.9 Stack

-2.9 Stack

--Video

-2.10 Application of Stack

--Video

-2.11 Queue

-2.11 Queue

--Video

3. Tree

-3.1 Definition of Binary Tree

-3.1 Definition of Binary Tree

--Video

-3.2 Implementation of Binary Tree

-3.2 Implementation of Binary Tree

--Video

-3.3Traversal

-3.3 Traversal

--Video

-3.4 Binary Search Tree

-3.4 Binary Search Tree

--Video

-3.5 Search on BST

-3.5 Search on BST

--Video

-3.6 Insertion on BST

-3.6 Insertion on BST

--Video

-3.7 Introduction of Heap

-3.7 Introduction of Heap

--Video

-3.8 Construction of Heap

-3.8 Construction of Heap

--Video

-3.9 Operations on Heap

--Video

-3.10 General Tree

--Video

4. Search

-4.1 Definition of Searching

--Video

-4.2 Searching of Sorted Array

-4.2 Searching of Sorted Array

--Video

-4.3 Definition of Hash Table

--Video

-4.4 Collision in Hash Table

-4.4 Collision in Hash Table

--Video

-4.5 Extension of Linear Probing

--Video

-4.6 Insertion Operation of Hash Table

--Video

-4.7 Search Operation of Hash Table

-4.7 Search Operation of Hash Table

--Video

5. Index

-5.1 Introduction of Index

--Video

-5.2 Linear Index

-5.2 Linear Index

--Video

-5.3 2-3 tree index

-5.3 2-3 tree index

--Video

-5.4 Implementation of 2-3 tree

-5.4 Implementation of 2-3 tree

--Video

-5.5 B-Tree

-5.5 B-Tree

--Video

-5.6 Insertion Operation on B+ Tree

--Video

-5.7 Deletion Operation on B+ Tree

--Video

6. Graph

-6.1 Definition of Graph

--Video

-6.2 Implementation of Graph

--Video

-6.3 Adjacency Matrix

--Video

-6.4 Adjacency List

--Video

-6.5 Graph Traversal - DFS

--Video

-6.6 Graph Traversal - BFS

--Video

-6.7 Topological Sort

--Video

-6.8 Shortest Path Problem

--Video

-6.9 Single Source Shortest Path

--Video

-6.10 Dijkstra Algorithm

--Video

7. Sorting

-7.1 Sorting Problem

--Video

-7.2 Insertion Sort

--Video

-7.3 Selection Sort

--Video

-7.4 Bubble Sort

--Video

-7.5 Shell Sort

--Video

-7.6 Quick Sort

--Video

-7.7 Heap Sort

--Video

-7.8 Comparison

--Video

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。