4.5 链表元素的删除

1.删除指定索引index处的元素

和向链表中添加元素一样,寻找到等待删除的元素前的节点

 找到2前面的节点1,

 1  public E remove(int index){
 2         if(index < 0 || index >= size)
 3             throw new IllegalArgumentException("Remove failed. Index is illegal.");
 4              //找到等待删除的元素之前的节点
 5         Node prev = dummyHead;
 6         for(int i = 0 ; i < index ; i ++)
 7             prev = prev.next;
 8 
 9         Node retNode = prev.next;  //retNode为待删除节点
10         prev.next = retNode.next;
11         retNode.next = null;
12         size --;
13 
14         return retNode.e;
15     }
16 
17     // 从链表中删除第一个元素, 返回删除的元素
18     public E removeFirst(){
19         return remove(0);
20     }
21 
22     // 从链表中删除最后一个元素, 返回删除的元素
23     public E removeLast(){
24         return remove(size - 1);
25     }

2 删除链表中的指定元素

 1 // 从链表中删除元素e
 2     public void removeElement(E e){
 3 
 4         Node prev = dummyHead;
 5         while(prev.next != null){
 6             if(prev.next.e.equals(e))
 7                 break;
 8             prev = prev.next;
 9         }
10 
11         if(prev.next != null){
12             Node delNode = prev.next;
13             prev.next = delNode.next;
14             delNode.next = null;
15             size --;
16         }
17     }

猜你喜欢

转载自www.cnblogs.com/make-big-money/p/10322269.html
4.5