定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
限制:
0 <= 节点个数 <= 5000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
链表经典中的经典问题
直接看代码注释吧
class Solution {
public ListNode reverseList(ListNode head) {
//当前节点的前一个节点
ListNode pre = null;
//当前节点
ListNode curr = head;
//当curr没有到达尾部时循环
while(curr != null){
//记录当前节点的下一个节点
ListNode a = curr.next;
//将当前的节点的next 指向curr的前一个节点
curr.next = pre;
//pre 和curr 同步后移
pre = curr;
curr = a;
}
//当current为null时,pre为翻转后链表的头结点
return pre;
}
}
补充一下递归解法,递归的过程中要注意尾部节点的断链
head=null;