论坛首页 Java企业应用论坛

图解双链表成链过程

浏览 1835 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-09-28   最后修改:2011-09-28
以java.util.LinkedList源码结合本人用XP自带的简陋的画图程序分析链表成链的过程如下:

1、一个空的双链表其实是个环形的链,如下图:


public LinkedList() {
        header.next = header.previous = header;
    }


2、添加第一个元素的过程如下:


public boolean add(E o) {
	addBefore(o, header);
        return true;
    }
private Entry<E> addBefore(E o, Entry<E> e) {
	Entry<E> newEntry = new Entry<E>(o, e, e.previous);//①
	newEntry.previous.next = newEntry;   //③
	newEntry.next.previous = newEntry;   //②
	size++;
	modCount++;
	return newEntry;
    }

注意看①处,意思是说新增节点的后驱是header,前驱是header的前驱(header的前驱始终会指向链表的最后一个元素)

3、添加第二个元素如下和添加第一个类似:


  • 大小: 5 KB
  • 大小: 22.9 KB
  • 大小: 12.9 KB
  • 大小: 24.3 KB
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics