/**
* 删除链表的节点
* 给定单项链表的头指针和一个节点指针,定义一个函数在O(1)的时间内删除该节点
*
* @param node
* @return
*/
public ListNode deleteNode(ListNode head, ListNode node) {
if (null == head || null == node) {
return null;
}
ListNode dummy = new ListNode(-1);
dummy.next = head;
if (node.next != null) {
//删除的节点是中间节点
int t = node.next.val;
node.val = t;
node.next = node.next.next;
} else {
//删除的节点是头节点或者尾节点
ListNode cur = dummy;
while (cur.next != node) {
cur = cur.next;
}
cur.next = cur.next.next;
}
return dummy.next;
}
剑指Offer学习-面试题18:删除链表的节点
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.