题目描述:输入一个链表,反转链表后,输出新链表的表头。
将自己的指向保存到tmp,也就是tmp=下一个节点
将自己指向pre
将自己变成pre
移动到一下节点
当下一个节点为空时,退出循环返回
public static ListNode reverseList(ListNode head) {
ListNode reversedHead = null;
ListNode current = head;
ListNode tmp = null;
ListNode pre = null;
while (current != null) {
tmp = current.next;
current.next = pre;
if (tmp == null) {
reversedHead = current;
}
pre = current;
current = tmp;
}
return reversedHead;
}
public static void main(String[] args) {
Random random = new Random();
ListNode head = new ListNode(random.nextInt(100));
ListNode traverse = head;
for (int i = 0; i < 10; i++) {
head.next = new ListNode(random.nextInt(100));
head = head.next;
}
traverseListNode(traverse);
System.out.println();
ListNode reversedHead = reverseList(traverse);
traverseListNode(reversedHead);
}
public static void traverseListNode(ListNode listNode) {
ListNode temp = listNode;
while (temp != null) {
System.out.print(temp.val+"->");
temp = temp.next;
}
System.out.println("null");
}