请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
现有一个链表 -- head = [4,5,1,9],它可以表示为:
4 -> 5 -> 1 -> 9
示例 1:
输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
解题思路:没有看到头结点很诧异,实际上给出的起始节点就是要删除的节点,即在原链表中操作又不能改变链表的结构,所以即把起始节点之后节点的值往前移动一位,然后删除最后一个节点。
void Solution::deleteNode(ListNode* node)
{
ListNode *prenode;
while(node->next != NULL)
{
node->val = node->next->val;
prenode = node;
node = node->next;
}
prenode->next = NULL;
}