一 概述
1 2 3
| 本文对比了静态链表和动态链表在存储数据方面的特点, 静态链表需预先分配固定空间且不能扩展,使用备用链表记录空间位置; 动态链表则支持动态内存分配,存储元素个数不限,操作更灵活
|
二 动态、静态链表存储结构
一、链表存储结构(动态链表)

二、同样是存储上图中的数据{1,2,3}
,使用静态链表存储数据的状态如下

静态链表和动态链表的共同点:数据之间 "一对一" 的逻辑关系都是依靠指针(静态链表中称 "游标")来维持
三 静态链表
1 2 3 4 5 6 7 8 9 10
| 使用静态链表存储数据需预先申请足够大的一整块内存空间, 静态链表存储数据元素的个数从其创建的那一刻就已经确定,后期无法更改。 如果创建静态链表时只申请存储 10 个数据元素的空间, 那么在使用静态链表时,数据的存储个数就不能超过 10 个,否则程序就会发生错误。
不仅如此,静态链表是在固定大小的存储空间内随机存储各个数据元素, 这就造成了静态链表中需要使用另一条链表("备用链表")来记录空间存储空间的位置, 以便后期分配给新添加元素使用,如上图所示。
如果选择使用静态链表存储数据,则需要通过操控两条链表,一条是存储数据,另一条是记录空闲空间的位置
|
四 动态链表
1 2 3 4
| 使用动态链表存储数据,不需要预先申请内存空间,而是在需要时才向内存申请;动态链表存储数据元素的个数不限。
使用动态链表的整个过程也只需操控一条存储数据的链表。 当表中添加或删除数据元素时,只需要通过 malloc 或 free 函数来申请或释放空间即可,实现起来比较简单。
|
五 参考