使单链表的链接顺序反转过来
例如:
输入:1->2->3->4
输出:4->3->2->1
方法:迭代与递归
public class reverseList { public static class ListNode{ int val; ListNode next; public ListNode(int val ,ListNode next){ this.val = val; this.next = next; } // 迭代算法,链表反转 // public static ListNode iterate(ListNode head){ // ListNode prev = null,next; // ListNode curr = head; // while (curr != null){ // next = curr.next; // curr.next = prev; // prev = curr; // curr = next; // } // return curr; // } // 递归算法 public static ListNode recursion(ListNode head){ if (head == null || head.next ==null){ return head; } ListNode new_Head = recursion(head.next); head.next.next = head; head.next = null; return new_Head; } } // 使用debug方式查看结果 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 prev = ListNode.recursion(node1); System.out.println(prev); } }