决定了数据的顺序和位置关系
数据存储于计算机的内存中。内存如右图所示,形似排成 1 列的箱子,1 个箱子里存储 1 个数据。数据存储于内存时,决定了数据顺序和位置关系的便是“数据结构”。
![](https://img2020.cnblogs.com/blog/1065530/202106/1065530-20210616205455815-638383908.png)
链表
链表是数据结构之一,其中的数据呈线性排列。在链表中,数据的添加和删除都较为方便,就是访问比较耗费时间。
这就是链表的概念图。Blue、Yellow、Red 这 3 个字符串作为数据被存储于链表中。每个数据都有 1 个“指针”,它指向下一个数据的内存地址。
在链表中,数据一般都是分散存储于内存中的,无须存储在连续空间内。
因为数据都是分散存储的,所以如果想要访问数据,只能从第1个数据开始,顺着指针的指向一一往下访问(这便是顺序访问)。比如,想要找到Red这一数据,就得从Blue开始访问。
这之后,还要经过 Yellow,我们才能找到 Red。
如果想要添加数据,只需要改变添加位置前后的指针指向就可以,非常简单。比如,在Blue和Yellow之间添加Green。
将 Blue 的指针指向的位置变成 Green,然后再把Green的指针指向Yellow,数据的添加就大功告成了。
数据的删除也一样,只要改变指针的指向就可以,比如删除Yellow。
这时,只需要把 Green 指针指向的位置从 Yellow 变成 Red,删除就完成了。虽然 Yellow 本身还存储在内存中,但是不管从哪里都无法访问这个数据,所以也就没有特意去删除它的必要了。今后需要用到Yellow所在的存储空间时,只要用新数据覆盖掉就可以了。
解说
补充说明
![](https://img2020.cnblogs.com/blog/1065530/202106/1065530-20210616210702425-1172644716.png)
另外,上文链表里的每个数据都只有一个指针,但我们可以把指针设定为两个,并且让它们分别指向前后数据,这就是“双向链表”。使用这种链表,不仅可以从前往后,还可以从后往前遍历数据,十分方便。但是,双向链表存在两个缺点:一是指针数的增加会导致存储空间需求增加;二是添加和删除数据时需要改变更多指针的指向。