基本数据结构--队列

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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值