当前位置:网站首页>链队
链队
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;
}

与链队相比,️顺序队 的定义、操作等都要简单,因此在考研的程序设计题目中,要尽量采用顺序队来解决问题,尽可能地避免用链队,除非题目明确规定要用链队。
边栏推荐
- STP --- 生成树协议
- Using Baidu EasyDL to realize forest fire early warning and identification
- DICOM医学影像协议
- 【C语言】指针和数组的深入理解(第三期)
- QT(41)-多线程-QTThread-同步QSemaphore-互斥QMutex
- 该如何训练好深度学习模型?
- 【debug】postgres数据存储错乱
- C语言基础[通俗易懂]
- [Academic related] Tsinghua professor persuaded to quit his Ph.D.:I have seen too many doctoral students have mental breakdowns, mental imbalances, physical collapses, and nothing!...
- ts集成和使用
猜你喜欢
随机推荐
The book "The Essence of Alipay Experience Design", a record of knowledge related to testing
遇到MapStruct后,再也不手写PO,DTO,VO对象之间的转换了
如何找到某个 ABAP structure 某字段的源头来自哪个数据库表
刷题-洛谷-P1200 你的飞碟在这儿Your Ride Is Here
AWS SES 的监控和告警
run command for node
uwp ScrollViewer content out of panel when set the long width
使用 Chrome 开发者工具 coverage 功能分析 web 应用的渲染阻止资源的执行分布情况
动态数组底层是如何实现的
C#将对象转换为Dictionary字典集合
刷题-洛谷-P1179 数字统计
vscode离线安装插件方法
Red5搭建直播平台
【AGC】构建服务1-云函数示例
About the state transfer problem of SAP e-commerce cloud Spartacus UI SSR
面试官:索引为什么会失效?
Uniapp微信雪糕刺客单页小程序源码
腾讯云胡启明:Kubernetes云上资源的分析与优化
STP基本配置及802.1D生成树协议的改进
MySQL字段类型









