实现一种算法,删除单向链表中间的某个节点(既不是第一个或最后一个节点),假设你只能访问该节点。

    实例: 输入:单向链表a->b->c->d->e->f 中的节点c 结果:不返回任何数据,让该链表变成a->b->d->e->f

    首先此题理解题意很关键,因为我们只能访问 c 节点,意味着我们是不知道 c 节点的前驱节点的,只能知道其后驱节点,但是其题意并非让我们使得 b 节点指向 d 节点,而是 使链表的结果变为a->b->d->e->f 所以我们只需要将 c 节点的值变为 d 然后删除掉 c 节点即可。

    杀不掉我,我就变成你,然后再干掉你,等于杀死了自己

    不过讲道理这题出题人表达不是很清晰

    1. /**
    2. * Definition for singly-linked list.
    3. * struct ListNode {
    4. * int val;
    5. * struct ListNode *next;
    6. * };
    7. */
    8. void deleteNode(struct ListNode* node) {
    9. struct ListNode *nextNode = node->next;
    10. node->val = nextNode->val;
    11. node->next = nextNode->next;
    12. nextNode->next = NULL;
    13. free(nextNode);
    14. }