8.7用结构体实现链表

如果要存储多个学生的数据,但又不知道有多少个学生,怎么存储呢?可以定义一个很大的结构体数组,但浪费存储空间。一种较好的方法是结合指针和结构体来实现:对输入的每一个同学的数据,动态申请一个结构体变量存储他的数据;并“设法”将存储这些学生数据的结构体变量“串接”起来,如下图所示。这样的好处是既节省存储空间;又能访问每个学生的数据因为它们已经“串接”成一个整体了

怎样将相同类型的结构体变量“串接”起来呢?我们知道指针的作用是用来指向某个变量。如果在结构体中包含一个基类型为同种结构体类型的指针成员,那就可以实现“串接”。例如,我们可以在前面引入的student结构体中增加一个指针成员。此处的next指针需要指向下一个学生的数据,所以基类型必须是student类型

struct student
{
    char name[20];
    int age;
    double score;
    student *next;   //改成“int *p;”更利于理解
};

在C语言中,动态申请存储空间要用malloc函数实现,释放存储空间要用free函数实现。在C++语言中,动态申请存储空间和释放存储空间分别是用new和delete运算符实现的。以下只介绍new、delete运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值