链表中,从前向后和从后向前两个方向都有链,并将有顺序的数据连接起来的方法叫做双向链表。
双向链表有以下三种要素:
- 数据
- 指向前一结点的指针
- 指向后一结点的指针
“数据” 是结点中保存的整数、浮点数和字符串等,由链表管理的数值。
“指向后一结点的指针” 又叫 “后继指针”, 起到连接后继结点的作用,指向后继结点的位置信息。
“指向前一结点的指针” 又叫 “前驱指针”, 起到连接前驱结点的作用,指向前驱结点的位置信息。
末尾结点的后继指针和头结点的前驱指针均为空。
除此之外,双向链表中还必须有两个重要的信息:
- “指向头结点的指针”, 称为 “头指针”。从头指针可以知道头结点的位置信息。
- “指向末尾结点的指针”, 称为 “尾指针”。从尾指针可以知道末尾结点的位置信息。
另外,在一个数据都没有的时候,头指针和尾指针都要给出 “无头结点”的信息。
双向链表中要指出指向头结点和尾结点的指针,且双向链表中的每个元素由数据和指向前后节点的指针构成。
双向链表的详细构造:
从头结点开始和从尾结点开始遍历数据: