8 }N;
9
10 typedef struct
11 {
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; //将要出队的元素赋给data
57 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; //将队头元素值赋给data
77 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 }
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
/bbs.youkuaiyun.com/topics/618654289)
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!