题目描述 : 输入一个链表,反转链表后,输出新链表的表头。
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 pre = null;
// 当前节点的下一个节点
ListNode next = null;
// 当前节点的下一个节点为空,则反转完毕
while(head != null){
// 记录当前节点的下一个节点
next = head.next;
// 将当前节点的下一个节点指向当前节点的前一个节点,完成反转
head.next = pre;
// 将当前节点的前一个节点向右移动
pre = head;
// 将当前节点向右移动到
head = next;
}
return pre;
}
}