news 2026/5/14 22:15:36

3.6链队列

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3.6链队列
#include<stdio.h> #include<malloc.h> //链队列的节点 typedef struct LinkNode{ int data; struct LinkNode*next; }*LinkNodePtr; //链队列 typedef struct LinkQueue{ LinkNodePtr front; LinkNodePtr rear; }*LinkQueuePtr; //construct an empty quene LinkQueuePtr initQueue(){ LinkQueuePtr resultPtr = (LinkQueuePtr)malloc(sizeof(struct LinkQueue)); //the header,the data is not useful LinkNodePtr headerPtr = (LinkNodePtr)malloc(sizeof(struct LinkNode)); headerPtr->next = NULL; resultPtr->front = headerPtr; resultPtr->rear= headerPtr; return resultPtr; } //initQuene //output the quene void outputLinkQueue(LinkQueuePtr paraQueuePtr){ LinkNodePtr tempPtr =paraQueuePtr->front->next; while(tempPtr!=NULL){ printf("%d ",tempPtr->data); tempPtr=tempPtr->next; } //while printf("\r\n"); } //outputLinkQuene //enquene void enqueue(LinkQueuePtr paraQueuePtr,int paraElement){ //step1 create a new node LinkNodePtr tempNodePtr=(LinkNodePtr)malloc(sizeof(struct LinkNode)); tempNodePtr->data =paraElement; tempNodePtr->next =NULL; //step2 link to the existing rear paraQueuePtr->rear->next =tempNodePtr; //it is the new rear paraQueuePtr->rear =tempNodePtr; } //enquene /*dequeue return the value of the header*/ int dequeue(LinkQueuePtr paraQueuePtr){ int resultValue; LinkNodePtr tempNodePtr; //step1 is the quene empty if(paraQueuePtr->front ==paraQueuePtr->rear){ printf("The queue is empty.\r\n"); return -1; } //if //step2 change the queue tempNodePtr =paraQueuePtr->front->next; resultValue =tempNodePtr->data; paraQueuePtr->front->next =paraQueuePtr->front->next->next; if(paraQueuePtr->rear == tempNodePtr){ paraQueuePtr->rear = paraQueuePtr->front; } //if //step3 free space //free(tempNodePtr) tempNodePtr =NULL; //step4 return return resultValue; } //enquene //unit test void testLinkQueue(){ LinkQueuePtr tempQueuePtr; tempQueuePtr = initQueue(); enqueue(tempQueuePtr,10); enqueue(tempQueuePtr,30); enqueue(tempQueuePtr,50); outputLinkQueue(tempQueuePtr); printf("dequeue gets %d\r\n",dequeue(tempQueuePtr)); printf("dequeue gets %d\r\n",dequeue(tempQueuePtr)); printf("dequeue gets %d\r\n",dequeue(tempQueuePtr)); printf("dequeue gets %d\r\n",dequeue(tempQueuePtr)); enqueue(tempQueuePtr,8); outputLinkQueue(tempQueuePtr); } //testLinkQuene //the entrance int main(){ testLinkQueue(); return 1; } //main

运行结果

10 30 50 dequeue gets 10 dequeue gets 30 dequeue gets 50 The queue is empty. dequeue gets -1 8

体会

比链表更快,但是没有链表灵活,方便。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 22:15:15

别再死记硬背了!用ENSP模拟器实战华为交换机VLAN配置,看完就会

实战华为ENSP模拟器&#xff1a;用可视化方法掌握VLAN配置精髓 很多网络工程师在初学阶段都经历过这样的困境&#xff1a;面对厚厚的命令手册&#xff0c;死记硬背各种VLAN配置指令&#xff0c;却在真实环境中手足无措。这种脱离实际场景的学习方式不仅效率低下&#xff0c;更难…

作者头像 李华
网站建设 2026/5/14 22:14:24

如何在macOS上运行Windows应用:Whisky让你的Mac变身Windows工作站

如何在macOS上运行Windows应用&#xff1a;Whisky让你的Mac变身Windows工作站 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 你是否曾经因为某个必须使用的Windows软件而烦恼&#…

作者头像 李华
网站建设 2026/5/14 22:13:41

终极免费AMD Ryzen调试工具:5分钟掌握硬件底层控制权

终极免费AMD Ryzen调试工具&#xff1a;5分钟掌握硬件底层控制权 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://git…

作者头像 李华
网站建设 2026/5/14 22:10:37

如何快速解决Zotero中文文献管理难题:茉莉花插件终极指南

如何快速解决Zotero中文文献管理难题&#xff1a;茉莉花插件终极指南 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 如果你正在使…

作者头像 李华