LeetCode--删除链表中的节点

这道题是探索初级算法中链表一节的第一题。
点击此处查看题目
代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
void deleteNode(struct ListNode* node) 
{
    struct ListNode *s;
    s=node->next;
    node->val=s->val;
    node->next=node->next->next;
    free(s);
}

函数只给了要删除的节点,不能通过扫描整个链表找到其前驱节点而删除该节点。因此,可以把要删除的节点node后的节点找到,置为s,并将s的数据域的值val赋值给node的数据域,现在就相当于有两个s节点,删除node后的s节点即可。

你可能感兴趣的:(数据结构)