LeetCode#237. Delete Node in a Linked List

来源:互联网 发布:认识奢侈品的软件 编辑:程序博客网 时间:2024/06/07 02:13
  • 题目:删除链表中的某个节点
  • 难度:Easy
  • 思路:分三种情况
    • 待删除节点不是尾节点:将待删除节点的下一个节点的值赋给待删除节点,然后待删除节点的指向下一个节点的指针调整指向下下个节点
    • 待删除节点也就是头结点(链表只有一个节点):将头结点和待删除节点都赋值为null
    • 待删除节点是尾节点:找到待删除节点的前一个节点,将待删除节点赋值为null,将前一个节点的next指针指向null
  • 代码:
private void deleteOneNode(ListNode head, ListNode toBeDelete){        if(head == null || toBeDelete == null){            return ;        }        //不是尾节点:将待删除节点的下一个节点的值赋给待删除节点,然后删除下一个节点        if(toBeDelete.next != null){            toBeDelete.val = toBeDelete.next.val;            toBeDelete.next = toBeDelete.next.next;        }else if(head == toBeDelete){            //链表只有一个节点            head = null;            toBeDelete = null;        }else{            //是尾节点:找到倒数第二个节点            while(head.next != toBeDelete){                head = head.next;            }            toBeDelete = null;            head.next = toBeDelete;        }    }
0 0
原创粉丝点击