定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
需要定义三个自定义的节点,一个值 cur 负责控制循环,curNext 负责保存 cur 的下一个值,prev 负责保存,cur 的前一个值,能够让 cur.next = prev 实现翻转链表;还需要定义一个 新的头节点 newHead,返回值就是新的头节点newHead
package com.Test0802;
/**
* Create with IntelliJ IDEA
* Description:反转链表
* User:Zyt
* Date:2020-08-02
*/
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
public class Solution {
public ListNode reverseList(ListNode head) {
ListNode cur = head;
ListNode prev = null;
ListNode curNext = cur;
ListNode newHead = head;
while (cur != null){
curNext = cur.next;
if (curNext == null){
newHead = cur;
}
cur.next = prev;
prev = cur;
cur = curNext;
}
return newHead;
}
}