当前位置:网站首页>链队
链队
2022-08-04 20:42:00 【柯基@】
链队就是采用链式存储结构存储队列,这里采用单链表来实现 ~
- 链队定义
/* 链队结点类型定义,定义下图中 A,B,C 结点 */
typedef struct QNode{
int data;
struct QNode *next;
}QNode;
/* 链队类型定义,可理解为链队列的 “头结点” ,与单链表的头结点相比,链队列的头结点必不可少 */
typedef struct{
QNode *front;
QNode *rear;
}LiQueue;

- 初始化
void initQueue(LiQueue *&lqu){
lqu=(LiQueue*)malloc(sizeof(LiQueue)); //为链队列的 “头结点” 申请空间
lqu->front=lqu->rear=NULL; //头、尾指针皆指向空
}

- 判断队空
int isEmpty(LiQueue *lqu){
if(lqu->rear==NULL || lqu->front=NULL)
return 1;
else
return 0;
}
- 入队
/* 思路:链队的特点就是不存在队列满上溢的情况,所以不用考虑队满的情况。 1.申请空间,创建结点,其 data 为 x 2.若为原始队列为空队,则头、尾指针都指向新插结点 3.不为空队,则尾插法,即:lqu->rear->next=q; lqu->rear=q; */
void enQueue(LiQueue *lqu,int x){
QNode *p; //为将要插入的值 x 创建结点
p=(QNode*)malloc(sizeof(QNode));
p->data=x;
p->next=NULL;
if(lqu->rear==NULL)
lqu->front=lqu->rear=p; //队列中只有一个结点时,front 和 rear 指向同一结点
else{
lqu->rear->next=p; //尾插法
lqu->rear=p;
}
}

- 出队
/* 思路:存在空队情况,记得考虑 1.判断是否为空队列,若为空,则直接退出 2.不为空,则采用头删法出队,但注意要分情况 3.情况一:删完后队列没有结点 。情况二:删完后队列还有结点 。 */
int deQueue(LiQueue *lqu,int &x){
if(lqu->rear==NULL || lqu->front==NULL)
return 0;
else
QNode *p;
p=lqu->front; //指向即将被删的结点
if(lqu->front==lqu->rear) //队列中只有一个结点时的出队操作需特殊处理
lqu->front=lqu->rear=NULL;
else
lqu->front=lqu->front->next; //头删法
x=p->data;
free(p);
return 1;
}

与链队相比,️顺序队 的定义、操作等都要简单,因此在考研的程序设计题目中,要尽量采用顺序队来解决问题,尽可能地避免用链队,除非题目明确规定要用链队。
边栏推荐
- mysql的存储过程介绍、创建、案例、删除、查看「建议收藏」
- JSD-2204-酷莎商城(管理员模块)-密码加密-Day10
- 面试官:索引为什么会失效?
- 阿里的arthas使用,入门报错:Unable to attach to 32-bit process running under WOW64
- C#将对象转换为Dictionary字典集合
- [AGC] Build Service 1 - Cloud Function Example
- 刷题-洛谷-P1317 低洼地
- ts集成和使用
- JS new一个构造器发生了什么?从零手写一个new方法
- Using Baidu EasyDL to realize forest fire early warning and identification
猜你喜欢

Zero-knowledge proof - zkSNARK proof system

帝国CMS仿核弹头H5小游戏模板/92game帝国CMS内核仿游戏网整站源码

Five Minutes Introductory Text Processing Three Musketeers grep awk sed

【C语言】指针和数组的深入理解(第三期)

漫画 | 老板裁掉我两周后,又把我请回去,工资翻番!

五分钟入门文本处理三剑客grep awk sed

KubeSphere简介,功能介绍,优势,架构说明及应用场景

搭建MyCat2双主双从的MySQL读写分离

c语言小项目(三子棋游戏实现)

面试官:JVM运行时数据区包含哪几部分?作用是啥?
随机推荐
使用百度EasyDL实现森林火灾预警识别
Desthiobiotin衍生物Desthiobiotin-PEG4-Amine/Alkyne/Azide/DBCO
【数据挖掘】搜狐公司数据挖掘工程师笔试题
搭建MyCat2一主一从的MySQL读写分离
QT(41)-多线程-QTThread-同步QSemaphore-互斥QMutex
STP基本配置及802.1D生成树协议的改进
[Data Mining] Written Exam Questions for Sohu Data Mining Engineers
构建Buildroot根文件系统(I.MX6ULL)
Tear down the underlying mechanism of the five JOINs of SparkSQL
用 Excel 爬取网络数据的四个小案例
取证程序分类
刷题-洛谷-P1304 哥德巴赫猜想
两种白名单限流方案(redis lua限流,guava方案)
面试官:索引为什么会失效?
vscode离线安装插件方法
Using Baidu EasyDL to realize forest fire early warning and identification
win10终端中如何切换磁盘
KubeSphere简介,功能介绍,优势,架构说明及应用场景
关于 SAP 电商云 Spartacus UI SSR 的 state transfer 问题
Apache服务器的配置[通俗易懂]