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

结点结构体

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

我们的生活因素十分复杂,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*代表结点指针,既方便自己编写,也方便他人阅读。

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值