链表
虽然链表和数组是两种不同的数据结构,但它们都是被存储在连续的存储空间上的。
如果将两种数据结构中的数据比作“货物”,那么放置它们的“仓库”都是一样的,里面都有一排排标好了固定编号的货架(见下图)。
不过和数组那样一下预定一系列连续的货架,就算不放货物也要占着不给别人用的数据组织方式不同,链表是按需分配的——有货物要存储了,才临时申请正好放这些货物的货架,随时加减。
单向链表
最简单的一种链表——单向(非循环)链表的示意图是这样的:
这样一个链表由若干链接在一起的节点(node)构成,每一个节点都包含两个部分:
- 本节点的数据
- 指向下一个节点的链接,也就是下一个节点的起始地址
在仓库里摆起来,就是下图这个样子的(假设一个链接的占位和数据一样,都是4个字节):
上图中,每一个节点占两个货架,第一个放货物(数据)