数据结构——队列链式存储实现
队列链式存储主要有两个方面需要注意,一个是定义时应该定义两种结构体,一个是具体节点,一个是队列本身。具体节点用于存储具体数据data和指向下一个节点的指针 * next。而队列本身的结构体只会储存两个具体节点的指针,一个指向队头,一个指向队尾。
第二个需要注意的是,出队操作,对于只剩下一个元素的队列而言,需要队队尾指针操作,使其等于头指针,以达到队空的目的,而其他情况下只需要修改头结点指向后直接释放该节点即可。
完整代码
#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 发布!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)