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

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

一.链队列的原理

很明显队列是一种线性结构,那么我们用链子链起来,还是一个线性结构.还记得我们刚刚讲的顺序队列嘛,在出队的时候,虽然有两种方法,但是两种都有缺点.

一个是需要移动数据,一个是空间不断减少,会溢出.

当我们采用链队列,就能很好的解决这中问题了.

二.链队列的结构

队列,我们肯定需要一个指向第一个节点的指针和一个指向最后一个节点的指针.

那么首先我们需要的是每个节点结构,可以链接起来.

我这里的数据是一个人的结构体,同时我还定义了一个宏当做链队列的最大值,为什么呢?

链队列没有固定大小,可以无限的入队,但是内存有限制,所以我们还是说希望有个最大值管住.

当然现在只是有节点,那我们的队头指针和队尾指针呢?

我们又加了一个结构体来当做链队列的结构,其头指针,尾指针的类型,就是我们的节点类型,加了一个length变量用来计数.

可以看到有点模糊,没事,我来画个图:

这就是链队列的结构了.

三.链队列的初始化

只需要将两个指针设置为空就可以了

像这样

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

1.是否为满

因为我们定义了一个最大数值的宏,同时又记录了插入的个数

对比一下即可判断是否为满.

2.是否为空

这个判断就更简单了,如果front指向的是空,那么就是空队列.

五.入队

入队操作跟单链表差不多,当然只能从尾部入队.

我们来看看图解:

所有有两种情况.

六.出队

要注意我们只能从头进行删除数据.

七.链队列的遍历

很单链表一样.

八.其他小接口

1.获取链队列长度

2.获取链队列首元素

3.清空链队列

将每个节点内存释放,同时将链队列头尾指针都设置为空.

酒.总结

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

相关文章
|
6月前
|
存储 编译器 C语言
【数据结构】C语言实现链队列(附完整运行代码)
【数据结构】C语言实现链队列(附完整运行代码)
123 0
|
6月前
|
C++
数据结构(链队列
数据结构(链队列
35 1
【数据结构】链队列的C语言实现
【数据结构】链队列的C语言实现
|
存储 缓存 算法
【数据结构】队列(循环队列和链队列)详细讲解各种操作
【数据结构】队列(循环队列和链队列)详细讲解各种操作
888 0
|
存储 算法 测试技术
追梦之旅【数据结构篇】——详解C语言实现链队列
详解C语言实现链队列~😎 前言🙌 整体实现内容分析💞 预备小知识🙌 1.链队列头文件编写🙌 2.链队列功能文件(Queue.c )编写:🙌 1)初始化函数实现 2)销毁函数实现 3)队尾插入元素函数实现 4)队头删除元素函数实现 5)获取队头元素函数实现 6)获取队尾元素函数实现 7)获取队列元素个数的函数实现 8)判空函数实现 3.链队列测试文件编写🙌 总结撒花💞
133 0
【数据结构初阶】一文详解顺序栈和链队列的基本操作(下)
【数据结构初阶】一文详解顺序栈和链队列的基本操作
73 0
【数据结构初阶】一文详解顺序栈和链队列的基本操作(下)
【数据结构初阶】一文详解顺序栈和链队列的基本操作(上)
【数据结构初阶】一文详解顺序栈和链队列的基本操作
93 0
【数据结构初阶】一文详解顺序栈和链队列的基本操作(上)
数据结构项目——循环队列与链队列
数据结构项目——循环队列与链队列
197 0
数据结构项目——循环队列与链队列
|
C++
数据结构——链队列
数据结构——链队列
214 0
数据结构——链队列
|
2天前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
40 9