[LeetCode-237] Delete Node in a Linked List(删除链表中节点)

来源:互联网 发布:java语言程序设计教程 编辑:程序博客网 时间:2024/03/29 03:01

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.

【分析】这道题让我们删除链表的一个节点,和通常不同的是,没有给我们链表的起点,只给我们了一个要删的节点,跟我们以前遇到的情况不太一样,我们之前要删除一个节点的方法是要有其前一个节点的位置,然后将其前一个节点的next连向要删节点的下一个,然后delete掉要删的节点即可。这道题的处理方法是先把当前节点的值用下一个节点的值覆盖了,然后我们删除下一个节点即可,代码如下:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     struct ListNode *next; * }; */void deleteNode(struct ListNode* node) {    if(!node)        return;    struct ListNode* node_temp;    node->val = node->next->val;    node_temp = node->next;//下一结点    node->next = node_temp->next;    free(node_temp);}
0 0
原创粉丝点击