实现一种算法,删除单向链表中间的某个节点(既不是第一个或最后一个节点),假设你只能访问该节点。
实例: 输入:单向链表a->b->c->d->e->f 中的节点c 结果:不返回任何数据,让该链表变成a->b->d->e->f
首先此题理解题意很关键,因为我们只能访问 c 节点,意味着我们是不知道 c 节点的前驱节点的,只能知道其后驱节点,但是其题意并非让我们使得 b 节点指向 d 节点,而是 使链表的结果变为a->b->d->e->f 所以我们只需要将 c 节点的值变为 d 然后删除掉 c 节点即可。
杀不掉我,我就变成你,然后再干掉你,等于杀死了自己
不过讲道理这题出题人表达不是很清晰
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/void deleteNode(struct ListNode* node) {struct ListNode *nextNode = node->next;node->val = nextNode->val;node->next = nextNode->next;nextNode->next = NULL;free(nextNode);}
