题目描述:
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
算法流程:
迭代(双指针)
考虑遍历链表,并在访问各节点时修改 next 引用指向,算法流程见注释。
代码:
class Solution {
public ListNode reverseList(ListNode head) {
ListNode cur = head, pre = null;
while(cur != null) {
ListNode tmp = cur.next; // 暂存后继节点 cur.next
cur.next = pre; // 修改 next 引用指向
pre = cur; // pre 暂存 cur
cur = tmp; // cur 访问下一节点
}
return pre;
}
}