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

237.LeetCode Delete Node in a Linked List(easy)[单链表 删除节点]

2016-04-15 17:06 671 查看
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.

Supposed the linked list is 
1 -> 2 -> 3 -> 4
 and you are given the third node with value 
3
,
the linked list should become 
1 -> 2 -> 4
 after calling your function.

Subscribe to see which companies asked this question
因为只能取到删除节点的指针和它后面的指针,不能访问到前面的指针,所以只能将删除节点后面的内容往前覆盖删除节点。过程如下:
用两个指针,一个保存删除节点前的指针,一个保存删除节点的。

class Solution {
public:
void deleteNode(ListNode* node) {
//因为只能取到删除节点的指针和它后面的指针,不能访问到前面的指针,所以只能将删除节点后面的内容往前覆盖删除节点
ListNode* p = node;
ListNode* l = node;
while(p->next != NULL)
{
p->val = p->next->val;
l = p;
p = p->next;
}
if(l != p)
{
l->next = NULL;
delete p;
}else
delete p;

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