前面我们学习了 先进先出、后进后出 的线性表- 队列,并且我们是使用数组进行了实现,那么这节课我们来使用链表来实现队列,即链队列!
队列的定义
队列(Queue)也是一种线性表, 但是它仅能在一端进行插入,而另一端进行删除的操作 ,插入的一端称为 队尾rear,删除的一端称为 队头front 。 向一个栈插入新元素又称作进队或入队, 从一个栈删除元素又称作出队或离队 。显而易见,它的特性是 先进先出、后进后出 。
链式队列内存中的结构
链式队列的特点
先进先出、后进后出
队列的定义一般遵循此结构:
//链表结构
struct Node
{
ElemType elem;
struct Node* next;
};
//定义队列
struct Queue
{
struct Node* front;// 队头删除
struct Node* rear; // 队尾插入
};
从上面我们可以看出, 队列的实现采用的是链表,同时需要设置两个变量front与rear分别记录队列前后端的地址,front会随着数据删除而改变,rear会随着数据插入而改变。
队列的C语言实现:
#include<stdio.h>
#include<stdlib.h>
typedef