重点是链表断开后要保存next指针
package me.wcy.j2se.datastructure;
/**
* 反转链表
*
* @author wcy
*
*/
public class ReverseList {
public static void main(String[] args) {
ListNode node5 = new ListNode(5);
ListNode node4 = new ListNode(4, node5);
ListNode node3 = new ListNode(3, node4);
ListNode node2 = new ListNode(2, node3);
ListNode head = new ListNode(1, node2);
System.out.println(head.toString());
head = reverseList(head);
System.out.println(head.toString());
}
private static ListNode reverseList(ListNode head) {
ListNode reversedHead = head;
ListNode node = head;
ListNode prev = null;
while (node != null) {
ListNode next = node.next;
if (next == null) {
reversedHead = node;
}
node.next = prev;
prev = node;
node = next;
}
return reversedHead;
}
}
输出:
1->2->3->4->5
5->4->3->2->1