题目描述
Write a function to delete a node in a singly-linked list. You will not be given access to the head
of the list, instead you will be given access to the node to be deleted directly.
It is guaranteed that the node to be deleted is not a tail node in the list.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思考
(中文版LeetCode的翻译就是个SB,给那么多没用的信息,题目应该描述成 写一个函数,删除当前节点。 就行了,给了一堆,我理解 再怎么样参数只要要2个,要删除的listnode,还有要删除第几个吧,结果就一个参数。)
虽然我们不能delete这个node A,但可以用后面的node B把这个node覆盖掉,然后用它的下下个地址node C来作为node A的下一个地址。相当于将A换成了B,然后A的next接了B的next。(确实是一种新奇的思路)
代码
/*
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
void deleteNode(struct ListNode* node) {
node->val = (node->next)->val;
node->next = (node->next)->next;
}