天天看点

c++ 结构体初始化为0_c语言结构体链表

c++ 结构体初始化为0_c语言结构体链表

引用自身的结构体,一个结构体中有一个或多个成员的基类型就是本结构体类型时,说明这个结构体可以引用自己,所以称作引用自身的结构体。

例如下面的结构体:

struct 
           

p是一个可以指向struct link类型变量的指针成员,这样,a.p=&a就是合法的表达式。那么,这有什么意义呢?

这样的意义就是我们可以把分散存储的数据项,用一个结构体成员链接起来(当然这也耗费了那个存储指针的内存空间)看下面的程序

#include 
           

这样的相链的数据存储形式称为链表!上面形成链表的方法是人为定义的,在程序执行过程中,不会生成新的存储单元,所以也称为“静态链表”

下面看一种更方法使用的“动态链表”

前面的日志中提到了C语言动态存储分配提供了“按需分配内存”的实现方法,有一个问题是,如果多次动态分配存储单元,各存储单元的地址不是一定是连续的,而所需要处理的批量数据往往是一个整体,各数据之间存在着顺序关系,这样,我们可以利用上面的链表把动态得到的存储单元在逻辑上(而不是在物理上)连接起来,就可以实现我们需要的顺序关系了。这时,是把链表技术与动态存储分配结合了起来,所以这里我们给了链表一个新的名词叫做“动态链表”

很自然,我们上面例子中的链表只有一个指向后面数据项的指针,如果有两个呢?一个指后,一个指前,这样就会出现“双向链表”与“单向链表”的区别

下面我们主要看单向链表

事实上,单身链表中的每个存储单元的数据(也就是结构体)的格式类型是相同的(包括数据成员和指针成员)

如下:

struct 
           

与单向链表有关的算法有以下几类:

建立链表 输出结点数据 插入结点数据 删除结点数据

下面这个程序是示例

#include 
           

学习资料分享交流群:1093789502 入群有全套学习视频资料电子书免费赠送!

参考资料:

物联网开发入门直播课 - 嵌入式/物联网-C语言编程基础​www.makeru.com.cn C语言_嵌入式​www.makeru.com.cn

c++ 结构体初始化为0_c语言结构体链表

嵌入式开发直播课 - 带你提升C编程能力​www.makeru.com.cn

c++ 结构体初始化为0_c语言结构体链表

嵌入式底层开发 - 夯实C语言,从小白到大牛的进阶之路!​www.makeru.com.cn

c++ 结构体初始化为0_c语言结构体链表

嵌入式开发直播课 - 嵌入式-指针​www.makeru.com.cn

继续阅读