删除链表的节点
Posted wylwyl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除链表的节点相关的知识,希望对你有一定的参考价值。
题目:
在O(1)时间内删除链表节点。给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。
解答:
1 public class Solution { 2 3 public static void deleteNode(ListNode head, ListNode node) { 4 if(head == null || node == null) { 5 return; 6 } 7 8 // 待删除的节点不是尾节点 9 if(node.next != null) { 10 ListNode tmp = node.next; 11 node.val = tmp.val; 12 node.next = tmp.next; 13 } else if(node == head) { // 头节点 14 head = head.next; 15 node = null; 16 } else { 17 // 尾节点 18 ListNode tmp = head; 19 while(tmp.next != node) { 20 tmp = tmp.next; 21 } 22 23 tmp.next = null; 24 node = null; 25 } 26 } 27 }
以上是关于删除链表的节点的主要内容,如果未能解决你的问题,请参考以下文章