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 }