当前位置: 首页 > news >正文

03-3.2.3 队列的链式存储的实现

  • 👋 Hi, I’m @Beast Cheng
  • 👀 I’m interested in photography, hiking, landscape…
  • 🌱 I’m currently learning python, javascript, kotlin…
  • 📫 How to reach me --> 458290771@qq.com

喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻
此外,《程序员必备技能》专栏和《程序员必备工具》专栏(该专栏暂未开设)日后会逐步更新,感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀
谢谢大家!🙏

代码实现

typedef struct LinkNode{    //链式队列结点ElemType data;struct LinkNode *next;
}LinkNode;typedef struct{             //链式队列LinkNode *front, *rear; //队列的队头和队尾指针
}LinkQueue;

基本操作

初始化

带头结点

void InitQueue(LinkQueue &Q){//初识时,front和rear都指向头结点Q.front = Q.rear = (LinkNode*) malloc (sizeof(LinkNode));Q.front->next = NULL;
}void testQueue(){LinkQueue Q;   //声明一个队列InitQueue(Q);  //初始化队列
}
带头结点的队列判空
bool IsEmpty(LinkQueue Q){if(Q.front == Q.rear)return true;elsereturn false;
}

不带头结点

void InitQueue(LinkQueue &Q){//初始时,front和rear都指向NULLQ.front = NULL;Q.rear = NULL;
}
不带头结点的队列判空
bool IsEmpty(LinkQueue Q){if(Q.front == NULL)return true;elsereturn false;
}

入队

带头结点

void EnQueue(LinkQueue &Q, ElemType x){LinkNode *s= (LinkNode *) malloc (sizeof(LinkNode));s->data = x;s->next = NULL;Q.rear->next = s;   //新结点插到rear之后 Q.rear = s;         //修改表尾指针
}

出队

带头结点

bool DeQueue(LinkQueue &Q, ElemType &x){if(Q.front == Q.rear)return false;            //空队LinkNode *p = Q.front->next;x = p->data;                 //用变量x返回队头元素Q.front->next = p->next;     //修改头结点的next指针if(Q.rear == p)              //此前是最后一个结点出队Q.rear = Q.front;        //修改rear指针free(p);                     //释放结点空间return true;
}

相关文章:

  • 【人工智能】流行且重要的智能算法整理
  • TP8 定时任务yzh52521/http-crontab 教程
  • 前端 CSS 经典:水波进度样式
  • Windows取证分析 | 如何最大程度提升分析效率
  • 【MySQL】表的约束
  • 腾讯开源人像照片生成视频模型V-Express
  • 240520Scala笔记
  • MySQL之查询性能优化(十)
  • 19.删除链表的倒数第N个结点
  • 如何利用exceljs将data数据导出表格实现日期去重,同时保留对应日期的每一列数据
  • 【C++ | 拷贝构造函数】一文了解C++的 拷贝(复制)构造函数
  • 【Linux】进程(8):Linux真正是如何调度的
  • Gradio.NET:一个快速制作演示demo网页的利器
  • 鸿蒙开发接口数据管理:【@ohos.data.preferences (首选项)】
  • 在Windows中使用svn的命令行
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • co.js - 让异步代码同步化
  • IDEA常用插件整理
  • JS字符串转数字方法总结
  • October CMS - 快速入门 9 Images And Galleries
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • React as a UI Runtime(五、列表)
  • vue的全局变量和全局拦截请求器
  • 分类模型——Logistics Regression
  • 每天10道Java面试题,跟我走,offer有!
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 说说动画卡顿的解决方案
  • 小程序测试方案初探
  • 一起参Ember.js讨论、问答社区。
  • 应用生命周期终极 DevOps 工具包
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​TypeScript都不会用,也敢说会前端?
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (10)ATF MMU转换表
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (4)STL算法之比较
  • (独孤九剑)--文件系统
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (十八)SpringBoot之发送QQ邮件
  • (实战篇)如何缓存数据
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • . Flume面试题
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core 项目指定SDK版本
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • [Android]如何调试Native memory crash issue
  • [ARC066F]Contest with Drinks Hard
  • [asp.net core]project.json(2)
  • [EFI]DELL XPS13 9360电脑 Hackintosh 黑苹果efi引导文件
  • [go 反射] 进阶