大话数据结构五:线性表的链式存储结构(双向链表)
1. 双向链表:在单链表的每个结点中,再设置一个指向其前驱结点的指针域,那么在双向链表中的结点都有两个指针域,一个指向直接后继,另一个指向直接前驱。
2. 单链表和双向链表比较:
单链表:总是要从头到尾找结点,只能正遍历,不能反遍历。
双向链表: 可以从头找到尾,也可以从尾找到头,即正反遍历都可以,可以有效提高算法的时间性能,但由于每个结点需要记录两份指针,所以在空间占用上略多一点,这就是通过空间来换时间。
3. Java实现双向链表:
public class Main {public static void main(String[] args) {DoubleLinkedList<Integer> dll = new DoubleLinkedList<Integer>();dll.addBeforeHead(2);dll.addAfterTail(3);dll.addBeforeHead(1);dll.display();dll.insert(4,4);dll.insert(5,5);dll.insert(6,6);dll.display();dll.delete(6);dll.delete(3);dll.delete(1);dll.display();System.out.println("双向链表的长度为: " + dll.getSize());}}