反转链表
题目
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
思路:就地操作
- 逐个断开原链表的每个节点
- 将断开的节点连接到前一个节点
- 最后一个非空节点即为头节点
如图所示
代码示例
ListNode reverseList(ListNode head) {
ListNode pre = null, next = null;
while (head != null) {
next = head.next; // 保存下一个节点
head.next = pre; // 将当前节点连接到上一个节点
pre = head; // 更新上一个节点
head = next; // 更新当前节点为下一个节点
}
return pre; // 当前节点为null,null的前一个节点为头节点
}