数据结构论坛

首页 » 分类 » 问答 » C语言指针应用,如何设计链表,使用链表管
TUhjnbcbe - 2023/7/6 19:25:00

链表

链表是一种“链式”存储数据的结构,通过指针,可以把每一个元素连接起来,形成一个数据集合。假设有如下3个int类型的变量:

inta1,a2,a3;

那么,我们可以把它组成一个集合,如下:

可以看到,a1、a2、a3通过指针,组成一个链式存储的集合,这种存储方式就称为:链表。

可以看到,如果我们知道了a1元素,想获取a2元素,就通过a1元素的“指针”数据,知道a2的地址,从而获取到a2元素。

通过上面的分析,我们知道了链表的定义和数据表示形式。现在,我们来编写一个程序测试例子,更直观地感受“链表编程”的过程。代码如下:

可以看到,我们通过n1节点,就可以访问n2、n3节点。因为n1、n2、n3节点都通过pnext指针,形成一个链表。如下图:

可以看到,链表中挂载的每一个节点,定义如下:

structnode

{

inta;//节点存放数据

structnode*pnext;//指向下一个节点的指针,形成链表;

};

其中,定义了inta成员,它拥有存放链表需要挂载的数据。例如,我们需要挂载的inta1,a2,a3数据,就是存放在structnode节点的inta成员中。

然后,定义pnext成员,它是structnode类型的指针变量。那么,通过这个指针,就可以指向一个structnode类型的变量。最终,N个structnode类型的变量就可以通过pnext成员连接起来,形成一个链表,如下图。

那么,我们可以总结链表使用的特点:

(1)通过指针,把每一个独立的节点连接起来;

(2)链表不支持随机访问某个节点,例如,在上面讨论的链表中,如果想访问最后一个节点,就必须从头节点开始,往后查找,查找到最后一个节点才可以。

所以,在随机访问指定节点的操作中,顺序表比链表快速,顺序表可以通过数组下标索引,快速访问到指定的元素。

(3)链表不需要申请一段连续的内存块;当新增一个节点的时候,只需要定义节点,再插入链表中即可。

链表中存储元素的内存空间,不用预先申请一段连续的内存空间;只有在需要的时候,动态申请就可以了。

所以,链表使用的内存空间比顺序表灵活,不会造成内存的浪费和存储空间的不足。

5总结

顺序表和链表是对数据的一种管理方式,在计算机系统中,我们需要管理的就是1和0这样的二进制数据。所以,对数据的管理非常重要。

这里我们介绍了顺序表和链表的定义和使用,让读者在学习了结构体之后,把结构体应用起来。

有了结构体,顺序表和链表的知识,就可以开发C程序应用程序。例如,图书馆管理系统,就可以使用这些知识来完成。

有了C语言和数据结构,我们就可以开发出有实用性的程序了。例如,我们实际操练的“网盘系统”项目,就是当前互联网上应用广泛的网盘,例如百度网盘、华为网盘等等。

读者要仔细分析,掌握好每一个知识点,然后,自己总结出对该知识点的理解。自己总结出来的知识,理解才深刻,才是自己掌握的知识。

1
查看完整版本: C语言指针应用,如何设计链表,使用链表管