【数据结构与算法】链队列

一.链队列的原理

很明显队列是一种线性结构,那么我们用链子链起来,还是一个线性结构.还记得我们刚刚讲的顺序队列嘛,在出队的时候,虽然有两种方法,但是两种都有缺点.
一个是需要移动数据,一个是空间不断减少,会溢出.
当我们采用链队列,就能很好的解决这中问题了.

二.链队列的结构

队列,我们肯定需要一个指向第一个节点的指针和一个指向最后一个节点的指针.
那么首先我们需要的是每个节点结构,可以链接起来.
在这里插入图片描述
我这里的数据是一个人的结构体,同时我还定义了一个宏当做链队列的最大值,为什么呢?
链队列没有固定大小,可以无限的入队,但是内存有限制,所以我们还是说希望有个最大值管住.

当然现在只是有节点,那我们的队头指针和队尾指针呢?
在这里插入图片描述
我们又加了一个结构体来当做链队列的结构,其头指针,尾指针的类型,就是我们的节点类型,加了一个length变量用来计数.

可以看到有点模糊,没事,我来画个图:
在这里插入图片描述
这就是链队列的结构了.

三.链队列的初始化

只需要将两个指针设置为空就可以了
像这样
在这里插入图片描述
在这里插入图片描述

四.链队列判断是否满或空

1.是否为满

因为我们定义了一个最大数值的宏,同时又记录了插入的个数
对比一下即可判断是否为满.
在这里插入图片描述

2.是否为空

这个判断就更简单了,如果front指向的是空,那么就是空队列.
在这里插入图片描述

五.入队

入队操作跟单链表差不多,当然只能从尾部入队.
我们来看看图解:
在这里插入图片描述
所有有两种情况.
在这里插入图片描述

六.出队

要注意我们只能从头进行删除数据.
在这里插入图片描述
在这里插入图片描述

七.链队列的遍历

很单链表一样.
在这里插入图片描述

八.其他小接口

1.获取链队列长度

在这里插入图片描述

2.获取链队列首元素

在这里插入图片描述

3.清空链队列

将每个节点内存释放,同时将链队列头尾指针都设置为空.
在这里插入图片描述

酒.总结

链队列是使用链表实现的队列,与顺序队列相比,链队列的插入和删除操作更高效,不需要移动元素。链队列的重要特点是使用头指针和尾指针分别指向链表的头部和尾部,可以快速执行入队和出队操作。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值