Data Structure 笔记2 (双链表)
(作者:colinboy Email:cybbh@163.com) 2008.5.4
(内容难免出现错误或一些专业词汇使用不当,只是个人笔记,能理解总体内容就好)
Doubly-Linked List
双链表
一个双链表的每个节点不仅拥有它的后继节点引用,而且拥有它的前驱节点的指针.
我们可以把双链表表示成如下形式
class DList {
private DListNode head;
private DListNode tail;
}
class DlistNode {
Object item;
DListNode prev;
DListNode next;
}
对于上面的双链表表示形式,我们需要对删除和添加操作作一些特殊检查,例如链表为空的时候.为了更方便的对数组操作,我们可以增加一个单独的节点称为"哨节点",哨节点同时当作链表的头和尾标志.
class DList {
private DListNode head;
private int size;
}
class DlistNode {
Object item;
DListNode prev;
DListNode next;
}
对于上述链表:
1. 对于任何DList,d.head != null.
2. 对于任何DlistNode,d.next != null.
3. 对于任何DlistNode,d.prev != null.
4. 对于任何DlistNode,如果x.next == y,那么y.prev == x.
5. 对于任何DlistNode,如果x.prev == y,那么y.next == x.
6. 一个DList链表的大小是链表中节点的个数,不包括哨节点.
7. 一个空的DList链表是一个拥有一个哨节点,并且哨节点的next和prev都指向它自身.