码迷,mamicode.com
首页 > 其他好文 > 详细

4.3 为链表设置虚拟头结点dummyhead

时间:2019-01-25 22:45:48      阅读:1797      评论:0      收藏:0      [点我收藏+]

标签:exce   link   nod   void   vat   oid   image   而不是   nbsp   

技术分享图片

 

链表设置虚拟头结点dummyhead,这样对链表来说,第一个元素就是dummyhead的next所对应的节点元素,而不是dummyhead所对应的节点元素。

dummyhead位置所对应的元素是根本不存在的,这只是未来我们编写逻辑方便而出现的一个虚拟头结点。

dummyhead就是索引为0的这个位置的元素的前一个节点。当我们有了dummyhead后,为链表添加一个元素,就不需要对头结点进行特殊处理了,只需要找到等待添加位置的前一个位置的节点,

此时对于链表来说,所有位置都有前一个节点。

代码

之前的成员变量元素、初始化构造函数

技术分享图片

 

 修改后的

1     private Node dummyHead;
2     private int size;
3 
4     public LinkedList(){
5         dummyHead = new Node();   //表明,对于一个空的链表来说,是存在一个节点的,这个唯一的节点就是虚拟头结点
6         size = 0;
7     }

 

 

修改前的add函数

技术分享图片

修改后

 1  public void add(int index, E e){
 2 
 3         if(index < 0 || index > size)
 4             throw new IllegalArgumentException("Add failed. Illegal index.");
 5 
 6         Node prev = dummyHead;//dummyHead是0这个位置的元素前一个位置的节点
 7         for(int i = 0 ; i < index ; i ++)
 8             prev = prev.next;
 9 
10         prev.next = new Node(e, prev.next);
11         size ++;
12     }

 

4.3 为链表设置虚拟头结点dummyhead

标签:exce   link   nod   void   vat   oid   image   而不是   nbsp   

原文地址:https://www.cnblogs.com/make-big-money/p/10321425.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!