Miku可爱捏我是阿曼

数据结构——队列链式存储实现

Human·2024-01-29 16:14·64 次阅读

数据结构——队列链式存储实现

队列链式存储主要有两个方面需要注意,一个是定义时应该定义两种结构体,一个是具体节点,一个是队列本身。具体节点用于存储具体数据data和指向下一个节点的指针 * next。而队列本身的结构体只会储存两个具体节点的指针,一个指向队头,一个指向队尾。
第二个需要注意的是,出队操作,对于只剩下一个元素的队列而言,需要队队尾指针操作,使其等于头指针,以达到队空的目的,而其他情况下只需要修改头结点指向后直接释放该节点即可。
完整代码

Copy
#include<bits\stdc++.h>
using namespace std;
#define ElementType int
typedef struct LinkNode{
ElementType data;
struct LinkNode *next;
}LinkNode;
typedef struct{
LinkNode *front,*rear;
}LinkQueue;
void IniQueue(LinkQueue &Q){
Q.front=Q.rear=(LinkNode *)malloc(sizeof(LinkNode));
Q.front=NULL;
}
bool IsEmpty(LinkQueue &Q){
if(Q.front==Q.rear){
printf("Queue is Empty!");
return true;
}
return false;
}
void EnQueue(LinkQueue &Q,ElementType x){
LinkNode *p=(LinkNode *)malloc(sizeof(LinkNode));
p->data = x;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
bool DeQueue(LinkQueue &Q,ElementType &x){
if(IsEmpty(Q)){
return false;
}else{
LinkNode *p = Q.front->next;
x = p->data;
if(p==Q.rear){
Q.rear = Q.front;
}
free(p);
return true;
}
}

本文由博客一文多发平台 OpenWrite 发布!

posted @   想成为编程高手的阿曼  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示