C语言中的队列(顺序队列与链式队列)——概念及其基本操作

前言

太久没更新了,早就说要写结果拖到现在。闲话说完,正式开始内容。
队列——顾名思义,其实在线性表中也是一种极其重要的结构。
与栈不同的是,栈对元素的插入和删除均在一端进行,而队列,从队头删除,队尾插入,正如日常生活中的排队一样,还是比较形象的。
本文将对队列的概念及操作函数进行简要介绍,并说明顺序队列(利用数组)和链式队列(利用链表)的一些基本算法。

一、队列的相关概念

1.队列及其操作 (先进先出)

1.1 相关概念

(1)队列:只允许在表的一端删除元素,在另一端插入元素的线性表
(2)空队列:不含元素的队列
(3)队首:队列中只允许删除元素的一端,又称head,front
(4)队尾:队列中只允许插入元素的一端,又称rear,tail
(5)进队(入队):将新元素插入到队尾
(6)出队:从队列删除一个元素,即删除队首元素
注:进出队可类比为排队

1.2 队列的基本操作
(1)InitQueue(q):初始化,将q置为空队列
(2)QueueEmpty(q):判断q是否为空队列
(3)EnQueue(q,e):将e插入队列q的尾端
(4)DeQueue(q,e):取走队列q的首元素,赋值给e
(5)GetHead(q,e);读取队列首元素,赋值给e
(6)QueueClear(q):置q为空队列

二、链式队列的基本操作

1.链式队列:运用链式结构进行存储的队列,一般用带表头结点的单链表表示

为提高插入删除效率,在头指针中设置两个指针
一般形式:
(1)Q.front:队首指针,指向表头结点
(2)Q.rear:队尾指针,指向队尾结点
注:当队列为空时,(1)(2)均执行表头结点
(3)Q.front->data:不放元素
(4)Q.fornt->next:指向队首结点a1

2.定义结点类型

(1)存放元素的结点类型:数据域和指针域

//定义结点类型
typedef struct Qnode
{
   
	ElemType data;//其中数据域data为抽象元素类型
	struct Qnode *next;//其中next为指针类型 
}Qnode,*QueuePtr;//其中,Qnode为结点类型, QueuePtr:指向Qnode的指针类型

(2)由头、尾指针组成的结点类型

//由头、尾指针组成的结点类型
typedef struct
{
   
	Qnode *front;//头指针
	Qnode 
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠檬茶@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值