Delete Node in a Linked List ---LeetCode
2016-11-23 22:32
295 查看
https://leetcode.com/problems/delete-node-in-a-linked-list/
解题思路:
由于没有 prev 指针,因此不会真正意义上的删除节点。我们可以将下一个节点的值赋给本节点,再将本节点指向下下个结点,删除下一个节点。这样间接地删除本节点。
题目要求说了不会删除尾节点,所以 node.next 以及 node.next.next 都不会出错。
如果删除的节点不存在呢,如果要求程序也可以删除尾节点呢?那么我们可以写一个较为通用的方法。
解题思路:
由于没有 prev 指针,因此不会真正意义上的删除节点。我们可以将下一个节点的值赋给本节点,再将本节点指向下下个结点,删除下一个节点。这样间接地删除本节点。
题目要求说了不会删除尾节点,所以 node.next 以及 node.next.next 都不会出错。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public void deleteNode(ListNode node) { node.val = node.next.val; node.next = node.next.next; } }
如果删除的节点不存在呢,如果要求程序也可以删除尾节点呢?那么我们可以写一个较为通用的方法。
public void deleteNode(ListNode node) { if(node == head) head = head.next; ListNode prev = head; ListNode curr = head.next; while(curr.next != null) { if(curr.val == node.val) { prev.next = curr.next; } else { prev = prev.next; curr = curr.next; } } if(curr.next == null && curr.val == node.val) prev.next = null; return head; }
相关文章推荐
- [Leetcode 237, Easy] Delete Node in a Linked List
- [LeetCode][JavaScript]Delete Node in a Linked List
- [LeetCode] Delete Node in a Linked List 删除链表的节点
- 【LeetCode 237】Delete Node in a Linked List
- [LeetCode] Delete Node in a Linked List
- leetcode-237-Delete Node in a Linked List
- [leetcode-237]Delete Node in a Linked List(C语言)
- leetcode 日经贴,Cpp code -Delete Node in a Linked List
- 【LeetCode】237. Delete Node in a Linked List
- LeetCode从零单排之零分段——Delete Node in a Linked List(删除链表中的元素)
- LeetCode Delete Node in a Linked List
- LeetCode Delete Node in a Linked List
- Leetcode 237 Delete Node in a Linked List
- LeetCode Delete Node in a Linked List (删除链表中的元素)
- leetcode:Delete Node in a Linked List
- Leetcode: Delete Node in a Linked List
- 【leetcode】Delete Node in a Linked List
- [leetcode] 237.Delete Node in a Linked List
- leetcode[237]:Delete Node in a Linked List
- [LeetCode] Delete Node in a Linked List