数据结构第五章-公开课件(设计).pptVIP

  • 0
  • 0
  • 约1.07万字
  • 约 79页
  • 2019-11-02 发布于广西
  • 举报
?5.1 队列的基本概念 5.2 顺序队列及其基本算法 5.3 链队列及其基本算法 5.4 队列的应用举例 ?5.1.1 队列的定义 5.1.2 队列的基本运算 定义 队列是满足下列条件的数据元素集合: (1) 有限个具有相同数据类型的数据元素的集合,D = { ai | i=1,2,…,n },ai为数据元素。 (2) 数据元素之间的关系为R = { ai,ai+1 | ai,ai+1∈D,i=1,2,…,n}; (3) a1为队头元素,an为队尾元素;数据元素按a1,a2,…,an的次序入队,也以相同的次序出队。 由定义可以看出,队列是由一组同类型数据元素(a1,a2,…,an)组成的线性序列。 其中,ai(1≤i≤n)可以是原子类型(如整型、实型、字符型等)、或是结构类型的数据元素。在一个队列中,元素ai-1是ai的唯一直接前驱,ai+1是ai的唯一直接后继;而队头元素a1无前驱,队尾元素an无后继。 因此,队列属于线性逻辑结构。 即:队列是限定仅在一端进行插入,而在另一端进行删除操作的线性表。 允许删除的一端称为队头(front),允许插入的一端称为队尾(rear)。 当队列中没有元素时称为空队列。在空队列中依次加入元素a1,a2,…an之后,a1是队头元素,an是队尾元素。显然退出队列的次序也只能是a1,a2,…an ,也就是说队列的修改是依先进先出的原则进行的。 5.1.1 队列的定义 ?5.1.2 队列的基本运算 5.1 队列的基本概念 ?5.2 顺序队列及其基本算法 5.3 链队列及其基本算法 5.4 队列的应用举例 ? 5.2.1 顺序队列的概念及数据类型 5.2.2 循环队列 5.2.3 循环队列的运算实现 5.3.1 顺序队列的数据类型 ? 5.3.2 循环队列 5.3.3 循环队列的运算实现 5.3.1 顺序队列的数据类型 5.3.2 循环队列 ? 5.3.3 循环队列的运算实现 5.1 队列的基本概念 5.2 顺序队列及其基本算法 ?5.3 链队列及其基本算法 5.4 队列的应用举例 ?5.3.1 链队列的概念及数据类型 5.3.2 链队列的运算实现 5.3.1 链队列的概念及数据类型 ?5.3.2 链队列的运算实现 5.1 队列的基本概念 5.2 顺序队列及其基本算法 5.3 链队列及其基本算法 ?5.4 队列的应用举例 ——基数排序问题 一、多关键字排序 下面,我们以一副扑克牌的排序过程为例,介绍多关键字排序的方法。 具体进行排序时有两种做法,其中一种是先按花色分成有序的四类,然后再按面值对每一类从小到大排序。该方法称为“高位优先”排序法。 二、链式基数排序 基数排序属于上述“低位优先”排序法, 通过反复进行分配与收集操作完成排序。 下面我们以实例来介绍基数排序的思想。 【例】一组记录的关键字为: (278,109,63,930,589,184,505,269,8,83) 试采用基数排序方法对其进行排序。 (278,109,63,930,589,184,505,269,8,83) 我们将上述单关键字看成由若干个关键字复合而成。 上述这组关键字的值都在0≤K≤999的范围内,我们可以把每一个数位上的十进制数字看成是一个关键字,即将关键字K看成由三个关键字K0,K1,K2组成。其中,K0是百位上的数字,K1是十位上的数字,K2是个位上的数字。 因为十进制的基数是10,所以,每个数位上的数字都可能是0~9中的任何一个。 我们先按关键字K2来分配所有参与排序的元素,将K2 = 0的元素放在一组、K2 = 1的元素放在一组、……、K2 = 9的元素放在一组。 对上述序列中的元素再按关键字K1来分配。然后,再按K1的值由0到9的顺序收集各组元素,形成序列(505,008,109,930,063,269,278,083,184,589)。 对上述序列中的元素再按关键字K0来分配。然后,再按K0的值由0到9的顺序收集各组元素,形成序列(008,063,083,109,184,267,278,505,589,930) 可以看出,基数排序的思想是: 首先将待排序的记录分成若干个子关键字,排序时,先按最低位的关键字对记录进行初步排序;在此基础上,再按次低位关键字进一步排序。 以此类推,由低位到高位,由次关键字到主关键字,每一趟排序都在前一趟排序的基础上,直到按最高

文档评论(0)

1亿VIP精品文档

相关文档