不知道各位读者是怎么理解链表的,还有就是链表和结构体的关系?最近开发的项目资源不是很紧凑,就用了面向对象编写,就大量的使用到结构体,有时还会配合共同体嵌套使用,顺便回顾了一些结构体的使用,这里主要简单回顾结构体和链表的关系;
链表在rtos上比较常见,这里会把复杂的东西简单化,这也是为啥有些推文的文字很少的原因,码农的产出就是代码,核心就是看相关代码;链表分单链表和双链表,核心都差不多的,就用单链表做展示;
| 定义节点
链表的最小单位就是节点,节点的定义就是链表的基础,下面展示一些定义的小案例:
// 正确定义方式之一struct node{ unsigned char data; struct node *next;};// 错误定义方式之一typrder struct node{ unsigned char data; node_t *next;}node_t; 代码都是一行一行执行的,如果没有提前声明调用的话,代码编译阶段就会报错,同样的,类型定义比类型调用使用晚也会报错;有些初学者会对结构体使用同名结构体会有疑问,其实把同名的结构体换个思路,上面的第二行是不是定义了一个struct node类型的数据,结构体成员是不是变量类型+变量名,是不是符合结构体的基本使用,所有这样的用法是合法的;
| 链接成表
链表的最小单位就是节点,那么多定义几个节点,然后就让它们链接起来,那么就形成了链表,那么这条“链”是啥呢,有时怎么把它们关联起来的呢?学过链表的同学就很清楚,就是节点中的同名结构体指针,这个指针就像电话号码,直接通过电话号码就能找到对应的人,同理也可以通过指针找到对应的节点;
申请内存的坑,申请的内存一定要强制转换类型,不强制转换默认是返回一个任意类型的指针(void *),不强制转换类型编译也会出错:
int main(){ int temp = 10; // 没有强制转换类型,编译报错 int *p = malloc(siezof(temp))} 列个完整的小程序,看完基本就学会了链表:
#include stdio.h#include stdlib.htypedef struct node{ unsigned char data; struct node *next;}node_t;int main(){ // 创建几个节点 node_t* node1=(node_t*)malloc(sizeof(node_t)); node_t* node2=(node_t*)malloc(sizeof(node_t)); node_t* node3=(node_t*)malloc(sizeof(node_t)); // 初始数据 node1->data = 1; node2->data = 2; node3->data = 3; // 链接成表 node1->next = node2; node2->next = node3; node3->next = node1; // 打印数据 printf(data:%d, node1->data); // 节点1的数据 printf(data:%d, node1->next->data); // 节点2的数据 printf(data:%d, node1->next->next->data); // 节点3的数据 printf(data:%d, node1->next->next->next->data); // 节点1的数据 // 释放内存 free(node1); free(node2); free(node3);} 链表的增删改查本质就是对节点中的指针操作,以及节点的创建和释放,基本不是什么大问题;看到这应该对链表基础知识没有疑问了吧,觉得有收获的同学动动小手指点个赞吧,我是noah,我们下篇推文再见!
泰尔认证中心向vivo颁发国内首批手机适老化认证证书
电路中为什么要使用光耦器件?
MOSFET作为开关案例及控制表
了解冷藏集装箱温度实时监测系统的应用
STM32配合W5500网卡连接华为云物联网平台通信
应用开发中结构体和链表的关系是怎样的
微处理器温度控制模拟输出阶段功能块
如何实现水电站智慧生态流量监测
冗余和热备有什么区别
智能硬件设计中I2S、PDM、TDM选什么音频接口
雷达电磁环境的数字建模和仿真设计
展现科创新力量,开启全球合作新篇章:吹田电气产品发布会成功举办
影响PCB回流炉设备的因素及解决方法
圆周率智能X万链信息|战略合作,开创Web3.0新篇章
AX5043射频模组的50mW的窄带传输性能介绍
提升Linux技能的13个必杀技!
三星正式发布全新5G SoC Exynos 2100
为什么苹果HomePod销量惨淡 甚至不敌阿里巴巴的天猫精灵
中国电梯行业产量和存量双双稳定增长,采购规模处于平稳增长的态势
曲面屏iphone8的Home键有两种方案!网友普遍认为第二种更美些!