一. 题目
给定单向链表的头指针和一个节点指针,定义一个函数在O(1) 时间删除该节点.
代码请到我的代码库中下载 Point2Offer
二. 代码
package week_4;
/**难度系数:***
* 剑指offer: 在O(1)时间删除链表节点
* 方法: O(1)时间,不遍历前序结点,复制覆盖
* 测试用例:功能测试(链表有多个结点/1个结点/为空/删除头结点/中间结点/尾结点)
* @author dingding
* Date:2017-7-5 17:10
* Declaration: All Rights Reserved!
*/
public class No13 {
public static void main(String[] args) {
test1();
test2();
test3();
test4();
test5();
}
//O(n)时间,顺序遍历
private static ListNode deleteNode_N(ListNode head,ListNode toBeDeleted){
if (head == null || toBeDeleted == null) {
System.out.println("链表为空.");
return null;
}
//只有一个结点,将head置为空
if (head.next == null) {
return null;
}
ListNode pCur = hea