数据分析师课|数据分析师基础问题,关于链式队列基本操作,你会得到答案
1、链式队列基本操作——链式队列数据入队
链队队列中,当有新的数据元素入队,只需进行以下 3 步操作:
将该数据元素用节点包裹,例如新节点名称为 elem;
与 rear 指针指向的节点建立逻辑关系,即执行 rear->next=elem;
最后移动 rear 指针指向该新节点,即 rear=elem;
由此,新节点就入队成功了。
例如,我们依次将 {1,2,3} 依次入队,各个数据元素入队的过程如图所示:

数据元素入链式队列的 C 语言实现代码为:
QNode* enQueue(QNode * rear,int data){
//1、用节点包裹入队元素
QNode * enElem=(QNode*)malloc(sizeof(QNode));
enElem->data=data;
enElem->next=NULL;
//2、新节点与rear节点建立逻辑关系
rear->next=enElem;
//3、rear指向新节点
rear=enElem;
//返回新的rear,为后续新元素入队做准备
return rear;
}
2、链式队列基本操作——链式队列数据出队
当链式队列中,有数据元素需要出队时,按照 "先进先出" 的原则,只需将存储该数据的节点以及它之前入队的元素节点按照原则依次出队即可。这里,我们先学习如何将队头元素出队。
链式队列中队头元素出队,需要做以下 3 步操作:
通过 top 指针直接找到队头节点,创建一个新指针 p 指向此即将出队的节点;
将 p 节点(即要出队的队头节点)从链表中摘除;
释放节点 p,回收其所占的内存空间;
例如,在图 2b) 的基础上,我们将元素 1 和 2 出队,则操作过程如图所示:

链式队列中队头元素出队的 C 语言实现代码为:
void DeQueue(QNode * top,QNode * rear){
if (top->next==NULL) {
printf("队列为空");
return ;
}
// 1、
QNode * p=top->next;
printf("%d",p->data);
top->next=p->next;
if (rear==p) {
rear=top;
}
free(p);
}
注意,将队头元素做出队操作时,需提前判断队列中是否还有元素,如果没有,要提示用户无法做出队操作,保证程序的健壮性。
以上就是有关于链式队列基本操作的相关内容,以及相应的解析,不论你是已经入职数据分析师岗位的新人,还是打算进入数据分析岗位的小白,以上的内容都或多或少会对大家有所帮助,环球网校的小编在这里祝大家的数据分析师职业道路顺利。
最新资讯
- 数据分析汇总报告有哪些组成?这才是数据分析师能力的体现2020-07-17
- 什么是EOI框架?这对于数据分析师竟然这么重要2020-07-17
- 如何进行业务核心数据分析?这对于数据分析师来说竟如此重要2020-07-16
- 有哪些数据分析实践的概念?不会这个的数据分析师都转行了2020-07-13
- 数据的分析思路是什么?正确的分析思路可以帮助数据分析师进步2020-07-10
- 什么是数据回归分析方法?这才是数据分析师要用到的利器2020-07-10
- 数据相关的分析方法是什么?这三种才是数据分析师的救星2020-07-10
- 高级数据分析方法是什么?这才是数据分析师进阶的必备技能2020-07-09
- 提出数据假设的方法是什么?这才是数据分析师应该明白的东西2020-07-09
- 如何找出数据优化指标?优秀的数据分析师都在这样思考2020-07-09