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

LeetCode:Delete Node in a Linked List

2015-10-12 23:41 567 查看
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.

My Solution

给定的是要删除节点的指针。首先想到的是释放当前节点,并把前后两个节点连起来。但单向链表,没有上一个节点的指针。所以只好从当前要删除的节点开始往后遍历,用后一个节点的值覆盖前一个节点的值,最后把尾节点释放掉。

思路比较简单,代码就不解释了。

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     struct ListNode *next;
* };
*/
void deleteNode(struct ListNode* node) {
struct ListNode *next = node->next;
while(next->next != NULL)
{
node->val = next->val;
node = next;
next = node->next;
}
node->val = next->val;
node->next = NULL;
free(next);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: