《计算机软件基础》第二章 线性数据结构(2-4)队列

24队列 24.1队列的定义与运算 定义:一种特殊的线性结构,限定只能在表的一端进行插入,在 表的另一端进行删除的线性表。此种结构称为先进先出(FIFO) 的线性表。 a1 a2, a 3,a 4 a n-1, an 队头 队列示意图 队 尾 队列的主要运算 (1)设置一个空队列; (2)插入一个新的队尾元素,称为入队; (3)删除队头元素,称为出队; (4)读取队头元素;
队列的主要运算 (1)设置一个空队列; (2)插入一个新的队尾元素,称为入队; (3)删除队头元素,称为出队; (4)读取队头元素; 2.4 队列 2.4.1 队列的定义与运算 定义:一种特殊的线性结构,限定只能在表的一端进行插入,在 表的另一端进行删除的线性表 。此种结构称为先进先出(FIFO) 的线性表。 a1 , a2 , a3 , a4 , ………… an-1 , an 队 列 示 意 图 队 头 队 尾

242队列的顺序存储结构 a)线性队列 ☆顺序存储结构 (b)循环队列 线性队列:一维数组实现,用两个整型变量分别记 下队头( front)和队尾(rear)的位置; 循环队列:在线性队列基础上,为了解决“假溢出” 问题,在对队列操作中加入取模运算,使队列的存取 可在一个假想的环形内存区域上进行,节约了内存
2.4.2 队列的顺序存储结构 ❖ 顺序存储结构 (a) 线性队列 (b) 循环队列 • 线性队列:一维数组实现,用两个整型变量分别记 下队头(front)和队尾(rear)的位置; • 循环队列:在线性队列基础上,为了解决“假溢出” 问题,在对队列操作中加入取模运算,使队列的存取 可在一个假想的环形内存区域上进行,节约了内存

(a)线性队列 队空时,令rear= front=-1,当有 新元素入队时,尾指针加1,当有元 素出队时,头指针加1。故在非空队 列中,头指针始终指向队头元素前 个位置,而尾指针始终指向队尾元素 的位置 3 rear 2 rear 3 2 front 0 front a (b) rear=ront=-1(队空)(b)e1,e2,e3入队(c)ele2出队,e4入队 队满
(a)线性队列 3 2 1 0 (a) rear=front= -1(队空) e3 e4 (c) (c) e1,e2出队,e4入队 队 满 rear =3 front e1 e2 e3 (b) rear front (b)e1,e2,e3入队 队空时,令rear=front=-1,当有 新元素入队时,尾指针加1,当有元 素出队时,头指针加1。故在非空队 列中,头指针始终指向队头元素前一 个位置,而尾指针始终指向队尾元素 的位置

(1)一般情况 rear front (b)循环队列 rear 通过加入%运算, 将头尾连接成一个 3 环,形成循环队列。 front e3 队满条件: rear (rear+1)% maxlen=front (3)队空 注:实际上为了避免与队空标志冲 5 突,还留有一个空间。 3 队空条件: . front front = rear 队满
(b) 循环队列 rear front 0 1 2 3 (3) 队空 队满条件: (rear+1)%maxlen=front 注:实际上为了避免与队空标志冲 突,还留有一个空间。 通过加入%运算, 将头尾连接成一个 环,形成循环队列。 e4 e3 (2) 队满 front e3 e4 0 1 2 3 rear e5 队空条件: front = rear

顺序存储队列的类型定义: tdefine maxlen 4 typedef struct queuetype Datatype q LMAXLEN] int front rear 泛指任何数据类型,具体 编程时应指定实际类型 J Queue
❖ 顺序存储队列的类型定义: #define MAXLEN 4 typedef struct queuetype {datatype q[MAXLEN]; int front,rear; }Queue; 泛指任何数据类型,具体 编程时应指定实际类型

(1)循环队列的初始化(置空队)算法: void InitQueue(Queue *sg) sq->front=sq->rear=0
(1)循环队列的初始化(置空队)算法: void InitQueue(Queue *sq) { sq->front=sq->rear=0; }

(2)循环队列的入队算法: void EnQueue (Queue *sq,int x) Rif(sq->rear+l)%MAXLEN==Sq->front) printf( queue is full!n); ese isq->rear=(sq->rear+1)%MAXLEN rear maslen=4 sq->qsq->rear=x; fE)g44=0 0 e ont 3
(2) 循环队列的入队算法: void EnQueue(Queue *sq,int x) {if((sq->rear+1)%MAXLEN==sq->front) printf("queue is full!\n"); else {sq->rear=(sq->rear+1)%MAXLEN; sq->q[sq->rear]=x; } } e4 e3 rear x

(3)循环队列的出队算法: int DelQueue(Queue *sq) Rif(sq->front==sq->rear) Sprintf( stack is empty! n") exit(1); else sq->front=(sq->front+1)%MAXLEN; return(sq->qIsq->front;
(3) 循环队列的出队算法: int DelQueue(Queue *sq) {if (sq->front==sq->rear) {printf("stack is empty!\n"); exit(1);} else {sq->front=(sq->front+1)%MAXLEN; return(sq->q[sq->front]); } }

2.4.3队列的链式存储结构 用带头结点的单链表存储,并且分别记下 队头和队尾结点的地址。 frontrear a a
用带头结点的单链表存储,并且分别记下 队头和队尾结点的地址。 2.4.3 队列的链式存储结构 front rear a1 a2 an ^ …

队列的链式存储数据类型的定义: typedef struct nodetype i datatype data struct node next } nodetype;//结点类型定义 typedef struct queuetype nodetype* front;//队头指针 nodetype*rear;//队尾指针 J QueueL
typedef struct nodetype { datatype data; struct node next; }nodetype;//结点类型定义 typedef struct queuetype { nodetype *front;//队头指针 nodetype *rear; //队尾指针 }QueueL; ❖ 队列的链式存储数据类型的定义:
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《计算机软件基础》C语言复习.ppt
- 《计算机软件基础》第二章 线性数据结构(2-2)线性表.ppt
- 《计算机软件基础》第二章 线性数据结构(2-1)数据结构概述.ppt
- 《计算机软件基础》第四章 习题答案.doc
- 《计算机软件基础》第二章习题答案.doc
- 《计算机软件基础》第三章习题答案.doc
- 《ASP程序设计》讲义PPT电子课件(共十一章).ppt
- 《大学计算机应用基础》模拟试题5.doc
- 《大学计算机应用基础》模拟试题4.doc
- 《大学计算机应用基础》模拟试题3.doc
- 《大学计算机应用基础》模拟试题2.doc
- 《大学计算机应用基础》模拟试题1.doc
- 《大学计算机应用基础》各章习题参考答案.doc
- 《微机原理与接口技术》课程教学资源(PPT课件)第6章 输入输出和中断技术.ppt
- 《微机原理与接口技术》课程教学资源(PPT课件)第5章 存储系统.ppt
- 《微机原理与接口技术》课程教学资源:教学大纲(共八章).doc
- 《微机原理与接口技术》课程教学资源(PPT课件)第4章 汇编语言程序设计(1/3).ppt
- 《微机原理与接口技术》课程教学资源(PPT课件)第3章 8086/8088指令系统(2/5).ppt
- 《微机原理与接口技术》课程教学资源(PPT课件)第3章 8086/8088指令系统(3/5).ppt
- 《微机原理与接口技术》课程教学资源(PPT课件)第2章 微型计算机基础.ppt
- 《计算机软件基础》第二章 线性数据结构(2.3-2.4)栈和队列.ppt
- 《计算机软件基础》第三章 非线性数据结构(3-2)树.ppt
- 《计算机软件基础》第三章 非线性数据结构(3-1)多维数组.ppt
- 《计算机软件基础》第二章 小结.ppt
- 《计算机软件基础》第三章 小结.ppt
- 《计算机软件基础》第四章 查找与排序(4.5-4.6.1)直接插入排序.ppt
- 《计算机软件基础》第四章 查找与排序(4.6.2)快速排序.ppt
- 《计算机软件基础》第四章 查找与排序(4.1-4.2)查找与排序概述.ppt
- 《计算机软件基础》第四章 查找与排序(4-8)二叉排序树的查找(1/2).ppt
- 《计算机软件基础》第四章 小结.ppt
- 《计算机软件基础》第四章 查找与排序(4-8)多关键字排序(2/2).ppt
- 《计算机软件基础》第四章 查找与排序(4-7)简单选择排序.ppt
- 《计算机软件基础》第一章 软件工程(1-8)维护.ppt
- 《计算机软件基础》第一章 软件工程(1-1)软件工程概述.ppt
- 《计算机软件基础》第一章 软件工程(1-2)软件定义阶段.ppt
- 《计算机软件基础》第一章 软件工程(1-3)需求分析.ppt
- 《计算机软件基础》第一章 软件工程(1-4)系统设计.ppt
- 《计算机软件基础》第一章 软件工程(1-5)详细设计.ppt
- 《计算机软件基础》第一章 软件工程(1-6)编码.ppt
- 《计算机软件基础》第一章 软件工程(1-7)软件测试.ppt