题解 | #链表内指定区间反转#
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
2022.08.05算法第二题
反转指定区间的链表——抽书法
抽书法:每次将当前节点的下一个节点放到最上方,依次循环能够将顺序反转。
需要虚拟头节点dummy
当前节点cur
前一个结点pre(这个节点不会变)
下一个节点temp
每次更新当前节点,最终将链表区间反转
将m-n区间内的链表反转。
首先将当前节点指向链表中的第m个节点,pre为前一个结点,temp为后一个节点。使用for循环,循环m-1次。
之后进行抽书循环,循环n-m次
temp=cur->next;
cur->next=temp->next;
temp->next=pre->next;
pre->next=temp;
以上循环从后到前,依次进行更新,顺序很重要不能颠倒,否则指向关系就会错乱。
每次进行赋值都是改变节点的原有指向,要确保顺序(从后往前)。
循环结束后得到结果