如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我,谢谢支持。
package swordOffer;
/**
* 题目:在O(1)时间内删除链表结点
* 在O(1)时间内删除链表结点,肯定不是遍历链表,那怎么做呢?
* 将下一个节点的值复制到该结点,删除下一个节点就行了!
* 大致思路就是这样,这只是正常情况下!特殊情况我们直接看代码中的注释!
* @author lenovo047
*
*/
public class test13 {
private static void deleteNode(Node listNode, Node deleteNode){
if(listNode == null || deleteNode == null) {
return;
}
//如果链表就一个结点
if(listNode == deleteNode){
listNode = null;
}
//如果deleteNode不是最后一个结点
else if(deleteNode.next != null){
Node next = deleteNode.next;
deleteNode.value = next.value;
deleteNode.next = next.next;
}
//deleteNode是最后一个结点
else {
while(listNode.next != null && listNode.next.next != null){
listNode = listNode.next;
}
listNode.next = null;
}
}
}