链表基础总结
1. 简单介绍 链表,即 线性表的链式存储结构 ,链表使用一组 任意 的存储单元来存储数据元素。如果某两个数据元素在逻辑位置上相邻,那么他们在物理位置上 不一定 相邻。如图: 但是这样看着太乱了,为了看着舒服,表示方便,我们把这张图改成: 2. 单向链表的结构和特点 在上图中,我们可以看出一个链表包含了 存储的数据元素 (方框中的值)以及这些数据元素之间 逻辑关系 (箭头,下一个数据元素的位置)。为了表示数据元素及逻辑关系,我们需要一个能存储它们的“载体”,这个载体就是 结点 (node)。它长这样: 一个结点有两个部分:data是存储数据的 数据域 ,next是存储它的下一个数据元素(在逻辑上)的位置信息的 指针域 。 有了这两个部分,一个具体的单向链表如下: 介绍到这里,可以很容易地总结出单向链表的特点: 链表由若干结点组成 每个结点由数据域和指针域组成,数据域存储数据,指针域存储下一个结点的位置 单向链表是单向的,数据存取必须从 第一个结点 开始 链表的最后一个结点没有 后继结点 ,所以其指针域置为 Null ,表示链表结束 2.1. 头结点与头指针 头结点 :即单链表的 第1个存数据的结点之前 的那个结点,该结点的数据域可以不存储任何信息,也可以存储如链表长度等附加信息,该结点的指针域指向第1个存数据的结点。 下面是一个带头结点的链表: head.next