83.链表

链表

在发展2方法的基础上,不要一次性的分配n个指针的内存!
每次使用malloc为新的结构体分配内存空间时,也为指向该结构体的指针(新指针)分配内存。

但是,如果这样做的话,还需要另外一个指针跟来跟踪新分配的指针,因为使用malloc的返回值是一个指针,需要“另外一个指针”来跟踪新指针。那这“另外一个指针”也需要一个指针来跟踪,,以此类推,需要重新设计结构体才能解决该问题。

就是在每个结构体中要包含指向下一个结构体next的指针,当创建新结构时,把该结构的地址存储在上一个结构体中
(其中的指针)。

举例:

#define 	NAME_SIZE 20//人名字符大小

typedef struct peoplecard
{
	char name[NAME_SIZE];
	int age;
	peoplecard* next;//指向下一个结构体的指针
}

知识点:
结构不能含有与结构本身类型相同的结构,但是可以含有指向同类型结构的指针,这是链表的基础。链表的每一项都包含在何处能找到下一项结构体的信息(指针)。

在这里插入图片描述

举例:
用户输入人名为Tom,年龄为20,程序将为people_card 类型的结构体分配内存,
如果该结构体后面没有其他的结构体,程序需要把指向下一个结构体指针next设置为NULL。

因为第一个结构体是没有其他结构体的next记录的,所以还需要一个单独的结构体指针存储第一个结构体的地址,这个指针可以被称为头指针或根指针(head或root)。

重新设计数据结构,每个结构中都包含指向下一个结构体的指针,当创建新的结构体时,可以把该结构体的地址存储在上一个结构体的next指针中。

新设计的结构示意图如下:
在这里插入图片描述
数据结构实现示意图:
在这里插入图片描述
软件结构设计:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiawucha159

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值