定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
剑指 Offer 24. 反转链表 - 力扣(LeetCode) (leetcode-cn.com)
//新建一个newHead,每次从原链表上取下头结点,插入到newHead的后面,原链表为空的时候反转完成
class Solution {
public ListNode reverseList(ListNode head) {
ListNode newHead = new ListNode();
ListNode temp;
while(head != null){
temp = head;
head = head.next;
temp.next = newHead.next;
newHead.next = temp;
}
return newHead.next;
}
}
//用cur和pre分别表示当前结点和原链表中的前一个结点,我们得目标是要让cur.next = pre;为防止链表断开,要先用temp记录cur的下一个结点,再让cur.next = pre,更新pre和cur
class Solution {
public ListNode reverseList(ListNode head) {
if(head == null){
return null;
}
ListNode pre = null;
ListNode cur = head;
ListNode temp;
while(cur != null){
temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;
}
return pre;
}
}