//单向链表反转
public class ListInversion {
public static void main(String[] args) {
ListNode node5 = new ListNode(5, null);
ListNode node4 = new ListNode(4, node5);
ListNode node3 = new ListNode(3, node4);
ListNode node2 = new ListNode(2, node3);
ListNode node1 = new ListNode(1, node2);
ListNode node = digui(node1);
while (node != null) {
System.out.println(node.val);
node = node.next;
}
}
//递归法
private static ListNode digui(ListNode head) {
if (head == null || head.next == null) {
return head;
}
//先递归,达到链表顶端 -- 从顶端开始反转,防止因改变指针,丢失相连节点
ListNode digui = digui(head.next);
head.next.next = head;
head.next = null;
return digui;
}
//链表类
static class ListNode {
int val; //节点值
ListNode next; //指针
public ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
}
07-11
4475
09-10