千家信息网

C语言中如何使用链表

发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章主要介绍C语言中如何使用链表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、结构体的概念比如说学生的信息,包含了学生名称、学号、性别、年龄等信息,这些参数可能有些是数
千家信息网最后更新 2025年11月11日C语言中如何使用链表

这篇文章主要介绍C语言中如何使用链表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、结构体的概念

比如说学生的信息,包含了学生名称、学号、性别、年龄等信息,这些参数可能有些是数组型、字符型、整型、甚至是结构体类型的数据。虽然这些都是不同类型的数据,但是这些都是用来表达学生信息的数据。

二、结构体的用法

1、struct 结构体名称 访问方法: 结构体变量名.成员

{undefined成员1;成员2;};

2、 typedef struct

{undefined成员1;成员2;}结构体名称;

在中大型产品中一般用第2种,因为结构体多了以后通过别名的方式定义结构体变量能够大大提高代码可读性。

三、结构体数组和指针

  • 1、直接用struct声明一个结构体,然后在定义结构体数组,struct 结构体名称 数组名[数组大小]

  • 2、用typedef struct声明一个结构体,并且为结构体重命名,通过重命名的方法定义结构体数组。结构体重命名 数组名[数组大小]

四、结构体指针

只要是存储在内存中的变量或者数组或函数编译器都会为他们分配一个地址,我们可以通过指针变量指向这个地址来访问地址里面的数,只要把指针变量定义成同数据类型就可以指向了,比如说要指向字符型变量就定义字符型指针变量,所以我们也可以定义结构体类型指针来指向它。

  • 1、直接用struct声明一个结构体,然后在定义结构体指针,struct 结构体名称 *结构体指针变量名

  • 2、用typedef struct声明一个结构体,并且为结构体重命名,通过别名的方式定义结构体指针。结构体别名 *结构体指针变量名

结构体指针访问成员方法 结构体指针变量名->成员名

五、包含结构体的结构体

学生信息包含姓名,学号,性别,出入日期等数据,而出生日期又包含年月日这3个成员,所以把出生日期单独声明一个结构体,那么学生这个结构体就包含出生日期这个结构体,这种就是包含结构体的结构体。

六、链表

在数据结构里面,有一种数据结构叫做链表,链表通俗的说就是把多个结构体变量像铁链一样环环相扣连接起来,我们拿4个学生数据组成的链表来举例,分析链表具体的工作原理。

#include/*只要具备多种属性就可以用结构体来构造;比如串口具有多种信息,时钟源,波特率,停止位,校验位*/typedef struct{    unsigned short Year;    unsigned char Mon;    unsigned char Day;}today;/*这个结构体只是构造一下,本程序没有用到*/struct student{    unsigned char Name[20];    unsigned char number;    unsigned char sex;    student *pLast; /*双向链表*/     student *pNext;};int main(){    unsigned char i;    struct student *pStu;      struct student stu1[4] =    {        {"stu1",1,'m',0,0},        {"stu2",2,'m',0,0},         {"stu3",3,'m',0,0},          {"stu4",4,'m',0,0},          };    stu1[0].pNext = &stu1[1];    stu1[1].pNext = &stu1[2];    stu1[2].pNext = &stu1[3];        stu1[3].pLast = &stu1[2];    stu1[2].pLast = &stu1[1];    stu1[1].pLast = &stu1[0];    pStu = &stu1[0];            for(i=0;i<4;i++)    {    printf("name=%s,number=%d,sex=%c\r\n",pStu->Name,pStu->number,pStu->sex);    pStu = pStu->pNext;            }    pStu = &stu1[3];    printf("\r\n");        for(i=0;i<4;i++)    {    printf("name=%s,number=%d,sex=%c\r\n",pStu->Name,pStu->number,pStu->sex);    pStu = pStu->pLast;            }                    return 0;}

链表是基于结构体的一种线性的数据结构。
结构体的应用非常广泛,这里我们记住一个黄金法则:只要是具备多种属性的任何东西,都可以用结构体来构造,我们把这个东西叫做对象。比如说单片机的串口是不是有时钟源、波特率、停止位、校验位这些属性?那么串口就是一个对象,可以用结构体来构造。

七、静态链表

上面的链表是4个学生信息的结构体变量连接在一起,这种是静态的链表,意思就是连接在一起的结构体变量数量是固定的,静态创建链表的方法适用于一些固定好数量的数据结构。比如产品需要在LCD上面显示多级菜单架构,一般使用按键或者触摸去进入子菜单或者返回主菜单,那么就可以把这些主菜单和子菜单做成一个链表,那么配合结构体指针就可以很轻松的找到需要跳转的菜单了,像这种菜单结构往往在功能定义的时候就要规划清楚一共需要多少个菜单,每一个菜单有那些共同的属性。

八、动态链表

动态链表的意思就是通过动态分配的方式把结构体变量连接起来,这种结构体变量的数量是未知的,会随着某种条件增加或减少结构体变量的数量。比如说我要接收串口的数据,如果串口一次性接收10个数据那么很好处理,我们直接定义一个数组,把大小设置成10就可以了。那如果我们不知道到底串口会来多少个数据的情况下,比如说有可能这一帧来100个,下一帧来1000个,那用数组来存储是不是就很不方便,不知道到底该分配多大的数组,如果分配大小为1000的数组就会造成内存浪费,像我们就可以使用动态链表的方式来实现。
一般动态链表用在底层操作系统比较多,通常用来做消息队列或者是任务创建。

以上是"C语言中如何使用链表"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

结构 变量 指针 数据 数组 菜单 成员 学生 串口 信息 动态 名称 就是 比如说 大小 属性 指向 数据结构 数量 方式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 生成的数据库是文件夹还是文件 数据库 1至100偶数和 ykl1刷打印服务器 信息平台网络安全测评 长丰标准网络技术怎么样 网络安全产业高峰论坛 服务器网址 软件开发在线笔试题 想要做软件开发需要哪些技能 上海品质网络技术厂家直销 常见服务器的配置与管理 饲养标准数据库 网络安全倡议书作文四百字 联影医疗软件开发好跳槽么 星际争霸服务器检索内容出不来 火绒安全软件服务器安全异常 搭建的数据库怎么清除 服务器安装在房间有辐射吗 谁是数据库的最高权限使用者 数据库安全目标不包括 药房网络安全应急措施 腾讯科技互联网 在服务器上使用校园账号登录 河南智慧工地管理平台软件开发 佳木斯软件开发公司地址 购物网站要买一个什么样的服务器 硅谷数据库 火绒安全软件服务器安全异常 神州数码鲲泰服务器订单 烟台人游烟台网络技术
0