给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点
错误思路:从链表结点开始,循序便利查找要删除的结点,并在链表删除结点
正确思路:已知要删除的结点可得下一个结点,那么我们可以将下一个结点内容复制到当前结点。同时注意首位结点
public static void delete(ListNode head,ListNode target){
if(head==null||target==null){
return;
}
if(head.getNext()==null){
if(head==target){
head=null;
}else{
return;
}
}
if(target.getNext()==null){
ListNode currentNode = head;
while(currentNode.getNext()!=null){
currentNode = currentNode.getNext();
}
currentNode.setNext(null);
}
if(target.getNext()!=null){
target.setValue(target.getNext().getValue());
if(target.getNext().getNext()!=null){
target.setNext(target.getNext().getNext());
}else{
target.setNext(null);
}
}
}
原文链接:http://blog.csdn.net/qq_22329521/article/details/53164557