思路
原先linkedList1:head1 -> node1 -> node2 -> node3
反转后LinkedList2:head2 -> node3 -> node2 -> node1
// 腾讯面试题:反转链表
public static void reverse(HeroNode head1) {
HeroNode temp1 = head1.next;
HeroNode temp1Next = null;
HeroNode head2 = new HeroNode(0, "", "");
if (temp1 == null || temp1.next == null) {
return; // return 表示不会走下面的元素了
}
while (temp1 != null) {
// 保存temp1.next值,因为下面 temp1.next用来调用
// 链表2的后面的元素 head2.next
temp1Next = temp1.next;
// 以下两步递归了
temp1.next = head2.next;
head2.next = temp1;
// 不能写成temp1=temp1.next,
// 因为temp1.next已经在上面重新赋值了
temp1 = temp1Next;
}
// 把head1.next指向head2.next,实现反转,得到链表2
head1.next = head2.next;
}