循环队列的学习解析以及C语言实现.pdfVIP

  • 0
  • 0
  • 约4.32千字
  • 约 10页
  • 2021-11-28 发布于辽宁
  • 举报
循环队列的学习解析以与 C 语言实现 首先我们先来了解一下队列的概念: 队列 是一种 先进先出的线性 表 只能在 表头删除 在表尾插入 ,操作系统的作业队列就是队列的一个 很好的应用。 也有可以在两端均可进行插入和删除操作的队列, 称为 双端队列 ,但其用处并没有一般队列广泛。 ADT Queue { 数据对象: D={ai | ai ∈ElemSet, i=1,2,...,n, n ≥0} 数据关系: R1={ a i-1,ai | ai-1, ai ∈D, i=2,...,n} (约定其中 a1 端为 队列头 , an 端为 队列尾 ) 基本操作 : InitQueue(Q) 初始化队列 DestroyQueue(Q) 销毁队列 QueueEmpty(Q) 判断队列空否 QueueLength(Q) 求取队长 1 / 10 GetHead(Q, e) 取对头元素 ClearQueue(Q) 清空对列 EnQueue(Q, e) 入队一个元素 DeQueue(Q, e) 出队一个元素 QueueTravers(Q, visit() ) 访问队列 }ADT Queue 队列也有两种存储结构,分别是 顺序存储 和链式存储 。 队列的顺序结构和顺序表以与顺序栈的存储结构类似, 他们所运 用的都是一组地址连续的存储。其中队列需要附设两个整形变量 front 和 rear 分别指示队列头元素和队列的尾元素的位置。 5 4 3 → Q.rea c 2 b 1 a 2 / 10 Q.rear → 0 Q.fron → Q.fron → (1) 空队列 (2)a,b,,c 相继入队 由于顺序队列所分配的空间有限, 根据队列入队和出队的特点可 能发生“ 假溢出 ”现象,即队尾元素无法在前移。解决的方法就是将 队列抽象成为环状,即 循环队列 。 队空条件: Q.front=Q.rear 循环队列 { 队满条件: (Q.rear+1)%MAXQSIZE 以下是循环队列的几种主要的操作以与 C语言实现: /******** 循环队列的数据结构 ***********/ #define MAXQSIZE 10 typedef struct { QElemType *base; 3 / 10 int front; i

文档评论(0)

1亿VIP精品文档

相关文档