借单链表结点理解结构体和指针

本文介绍了C语言中如何使用结构体来构造自定义数据类型,特别是在单链表中的应用。每个结点包含data数据域和next指针域。通过typedef,可以为结构体定义别名,如Node和LinkList,提高代码的可读性和便利性。定义结构体指针别名后,可以更直观地理解链表操作中的指针变量,如链表表头指针LinkList和结点指针Node*。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结点结构体

结构体就是一种构造数据类型

我们的生活因素十分复杂,C提供的数据类型有时并不能满足我们的需求,比如学生管理,每个学生有学号,姓名,年龄等等,我们每个学生的信息都单独存储未免太过繁琐。C语言就允许程序员可以自定义数据类型方便解决问题。

在单链表中,每个结点都有两部分构成:

data 数据域:用来存放该结点的数据
*next 指针域:用来存放于该结点相邻的下一个结点的地址

由于每个结点都是相同的构造,所以可以构造结构体:

struct Node
{
	datatype data;    //data数据域
	struct Node *next;    //*next指针域
}

而结构体变量的定义略显麻烦:

struct Node demo;    //定义一个该结构体变量demo,demo中存在两个上述区域

C语言提供了一种很方便的方法:typedef 可以为已有的数据类型定义别名
比如把int类型重命名为a,b

typedef int a,b;
a num1;    //相当于int num1;
b num2;    //相当于int num2;

那么自定义的结构体数据类型当然也可以定义别名

typedef struct Node
{
	int data;
	struct Node *next;
 } Node, *LinkList;

上述代码将该结构体重命名为Node
将指向该结构体的指针重命名为LinkList

目的是为了使用方便和增加可读性

在C中指针变量的定义就是在变量名前加一个’ * ',比如

int *p;    //定义一个int型指针p,可以指向int型变量的地址

同理,该结构体重命名为Node后

Node *demo;    //定义一个Node型指针demo,可以指向Node型数据的地址

而同时设置结构体指针变量名为LinkList,其实是为了提高代码的可读性,当我们创建新链表定义指针时

LinkList L;    // 定义表头指针L 
Node *p;    //新进结点指针p 

我们可以较清晰的理解L和p具体指的什么,而实质上,上述两个指针变量的定义是同等类型的指针变量,只是名字不同罢了,比如

Node *L;
Node *p;

但是这样的话很明显代码的可读性就不如直接用LinkList代表链表表头指针,Node*代表结点指针,既方便自己编写,也方便他人阅读。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值