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

C/C++ 数据结构 - 队列

1.队列

https://blog.csdn.net/LiuBo_01/article/details/80412290

1 #include <stdio.h>2 #include <stdlib.h>3 4 typedef struct Node5 {6     int data;7     struct Node* next;8 }N;9 10 typedef struct11 {12     N* front;13     N* rear;14 }Q;15 16 //初始化队列17 void Init(Q* q)18 {19     //创建一个头结点20     N* n = (N*)malloc(sizeof(N));21     q->front = q->rear = n; //队头和队尾指向头结点22     q->front->next = NULL;23 }24 25 //判断队列是否为空26 int IsEmpty(Q* q)27 {28     if (q->front->next == NULL)29     {30         return 1;31     }32     return 0;33 }34 35 //入队操作36 void Enter(Q* q, int data)37 {38     //创建一个新结点39     N* n = (N*)malloc(sizeof(N));40     n->data = data;  //将数据元素赋值给结点的数据域41     n->next = NULL;  //将结点的指针域置空42     q->rear->next = n;   //将原来队列的队尾指针指向新结点43     q->rear = n;      //将队尾指针指向新结点44 }45 46 //出队操作47 void Delete(Q* q,int* data)48 {49     if (IsEmpty(q))50     {51         printf("队列为空!\n");52         return;53     }54     //pDel指向队头元素,由于队头指针front指向头结点,所以pDel指向头结点的下一个结点55     N* n = q->front->next;56     *data = n->data;   //将要出队的元素赋给data57     q->front->next = n->next;  //使指向头结点的指针指向pDel的下一个结点58     //如果队列中只有一个元素,将队列置空59     if (q->rear = n)60     {61         q->rear = q->front;62     }63     free(n);   //释放pDel指向的空间64 }65 66 //取队头元素67 int GetHead(Q* q, int* data)68 {69     if (IsEmpty(q))70     {71         printf("队列为空!\n");72         return 0;73     }74     N* n;75     n = q->front->next;  //pCur指向队列的第一个元素,即头结点的下一个结点76     *data = n->data;      //将队头元素值赋给data77     return *data;             //返回队头元素值78 }79 80 //打印队列中的元素81 void Print(Q* q)82 {83     N* n;84     n = q->front->next;85     while (n)86     {87         printf("%d ", n->data);88         n = n->next;89     }90     printf("\n");91 }92 93 int main()94 {95     Q q;96     int x;97     Init(&q);98     Enter(&q,1);99     Enter(&q,2);
100     Enter(&q,3);
101     Enter(&q,4);
102     Print(&q);
103     Delete(&q,&x);
104     printf("%d\n",x);
105     GetHead(&q,&x);
106     printf("%d\n",x);
107     Print(&q);
108 
109     return 0;
110 }

http://www.lryc.cn/news/181855.html

相关文章:

  • 免杀对抗-DLL劫持免杀
  • Anaconda添加channels后出现unexpected urllib3 DEBUG logging from conda-build
  • python 将二维数组的数据保存到csv文件中
  • UGUI交互组件Button
  • 认知智能最新研究成果
  • Armv8/Armv9 Cache知识大纲分享--思维导图
  • 如何使用百度“云一朵”来分析PDF文件
  • IIS解决上传文件大小限制
  • 多源最短路径的原理及C++实现
  • JMeter性能测试
  • Cocos Creator3.8 实战问题(四)巧用九宫格图像拉伸
  • Linux shell编程学习笔记7:只读变量
  • Scala第十七章节
  • BGP高级特性——4字节AS号
  • cesium源码无法更新的解决方案
  • 大数据-玩转数据-双流JOIN
  • from PIL import Image,文字成图,ImageFont import jieba分词,input优雅python绘制图片
  • 渗透测试信息收集方法笔记
  • 协议栈——连接服务器
  • 数据结构--队列与循环队列的实现
  • 数据结构—栈、队列、链表
  • 2023年4月到7月工作经历
  • 嵌入式Linux应用开发-驱动大全-同步与互斥③
  • 力扣-383.赎金信
  • 计算机网络 第二章物理层
  • uniapp:动态修改页面标题
  • java学生管理系统
  • Docker和容器化:简介和使用案例
  • (高阶) Redis 7 第18讲 RedLock 分布式锁
  • 嵌入式软件架构基础设施设计方法