题目介绍:输入一个链表,反转链表后,输出链表的所有元素。
题目比较简短,所以直接上代码。
/*
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){
return null;
}
ListNode curNode = head.next;
head.next = null;
ListNode resultNode = head;
while(curNode!=null){
resultNode = curNode;
curNode = curNode.next;
resultNode.next = head;
head = resultNode;
}
while(resultNode!=null){
System.out.print(resultNode.val+" ");
resultNode = resultNode.next;
}
return head;
}
}
算法思想:第一步是空值检测。
第二步是链表反转。curNode用于链表的顺序访问,不断指向下一个节点,resultNode作为一个head节点与curNode之间的中间变量。
下面是画的比较丑陋的原理图: