题目描述
输入一个链表,反转链表后,输出新链表的表头。
解题思路
当对一个节点的next指针进行反转时,会造成链表的断裂,需要保存当前节点的next节点。
代码实现:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null || head.next == null) {
return head;
}
ListNode newHead = null;
ListNode pre = null;
ListNode cur = head;
while(cur != null) {
ListNode temp = cur.next;
if(temp == null) {
newHead = cur;
}
//当前节点的next指针指向前一个节点
cur.next = pre;
//当前节点变为前半段链表的最后一个节点,也是下一个节点需要指向的节点
pre = cur;
//后半段链表的第一个节点将会成为新的当前节点
cur = temp;
}
return newHead;
}
}