您的位置:首页 > Web前端 > Node.js

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 都不会出错。

/**
* 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: