这道题是探索初级算法中链表一节的第一题。
点击此处查看题目
代码:
/**
* 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
节点即可。