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

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

体会

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

http://www.jsqmd.com/news/817848/

相关文章:

  • 2026邛崃市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • pycatia实现多实体零件几何体拆分的工程实践
  • 体验Taotoken多模型聚合带来的选型灵活性与便利
  • 2026石嘴山市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • 2026曲阜市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • 天津哪里能找到性价比高的隔热膜服务商?
  • 观察使用Taotoken Token Plan后月度API成本的变化趋势
  • 2026佛山口碑优良小程序开发服务商推荐榜 - 奔跑123
  • 在自动化客服工单分类场景中集成多模型AI进行意图识别
  • 3.3V MCU驱动5V NeoPixel灯带:Adafruit Pixel Shifter电平转换实战
  • 3分钟快速上手Clipy:彻底告别macOS剪贴板烦恼的终极指南
  • 使用taotoken cli工具一键配置多开发环境与团队协作规范
  • 别再手动调参了!海康工业相机批量复制参数的3种实战方案(附代码避坑)
  • ETS2LA:让《欧洲卡车模拟2》自动驾驶的终极解决方案
  • 上位机知识篇---提高Linux下载速度
  • ARM+FPGA架构在AED自动体外除颤器中的硬核融合与系统设计
  • 2026曲靖市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • 佛山小程序定制开发公司:互诚科技的信誉与实力详解 - 奔跑123
  • 网站离线下载终极方案:HTTrack解决你的5大网络访问痛点
  • DeepSeek Azure部署最佳实践(含ARM模板+AKS+Managed Identity全栈配置)
  • 理解虚拟内存:程序看到的地址为什么不是真实内存
  • new days
  • Modbus云网关:免编程易操作,中小型工控项目组态快速落地
  • 别再只会轮询了!STM32CubeMX配置USART中断,从原理到调试一条龙指南
  • 2026衢州市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • Windows 10远程桌面黑屏后会话中断?从组策略入手精准修复
  • 英伟达“宣判”铜线死刑,光纤成AI刚需,中国企业掌握算力连接权!
  • 2026泉州市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • 白城招聘平台哪个岗位多:秒聘网全岗云集 - 13724980961
  • 翻了40万+Skills,最后我决定只安装这10个