1 基本介绍
队列是一种抽象数据结构,具有以下特点: (1)具有先进先出的特性(FIFO) (2)拥有两种基本操作,即加入和删除,而且使用front和rear两个指针来分别指向队列的前端和末尾。
队列的基本操作 create 创建空队列 add 将新数据加入队列的末尾,返回新队列 delete 删除队列前端的数据,返回新队列 front 返回队列前端的值 empty 若队列为空,则返回 ‘真’,否则返回 ‘假’
2 实现queue有两种方式可以用数组和链表
1.我们先用数组实现队列 数组实现队列的好处在于算法相当简单, 但是也有缺点,数组无法根据队列的实际需要动态申请, 只能声明固定的大小。现在我们声明一个有限容量的数组
(1)开始时,我们将front与rear都设置-1,当front = rear时,为空队列 (2)每加入一个元素,将rear值加1: (3)每取出一个元素,将front的值加1: (5)rear=MAXSIZE-1 ,表示队列已满
2用链表实现队列 front和rear指针 在队列中加入新节点等于加入到队列的末端,而删除节点就是将此队列的最前端的节点删除。
顺序队列,循环队列,链队列 队空条件:rear==front,但是一般需要引入新的标记来说明栈满还是栈空,比如每个位置布尔值
队满条件:(rear+1) % QueueSize==front,其中QueueSize为循环队列的最大长度 计算队列长度:(rear-front+QueueSize)% QueueSize 入队:(rear+1)% QueueSize 出队:(front+1)% QueueSize 假设以数组A[N]为容量存放循环队列的元素,其头指针是front,当前队列有X个元素,则队列的尾指针值为(front+X mod N)
|