定一个单链表的头结点head,长度为n,反转该链表后,返回新链表的表头应该如何做?

提问者:帅平 问题分类:面试刷题
定一个单链表的头结点head,长度为n,反转该链表后,返回新链表的表头应该如何做?例如:
原链表:1->2->3->4->5->NULL
反转后:5->4->3->2->1->NULL
1 个回答
久碍
久碍
解决思路如下:
1)定义两个指针:pre 和 cur ;pre 在前 cur 在后。
2)每次让 pre 的 next 指向 cur ,实现一次局部反转
3)局部反转完成之后, pre 和 cur 同时往前移动一个位置
4)循环上述过程,直至 pre 到达链表尾部

伪代码如下:
public ListNode reverseList(ListNode head) {
    ListNode prev = null;
    ListNode curr = head;
    while (curr != null) {
        ListNode nextTemp = curr.next;
        curr.next = prev;
        prev = curr;
        curr = nextTemp;
    }
    return prev;
}
发布于:1年前 (2022-12-21) IP属地:四川省
我来回答