一道简单的题目,下面直接贴代码,思路在注释中
import java.util.ArrayList; import java.util.List; /** * 反转链表 * 输入一个链表,反转链表后,输出新链表的表头 * * 解题思路: * 遍历两次,使用数组。第一次遍历所有,并按顺序全部放入数组中; * 第二次遍历,实现反转链表 * * 要注意的地方: * 当head为null时,可能存在数组下标的问题,要注意以下第二次遍历的反转过程 * * @author ihaokun * @date 2019/7/23 21:10 */ public class ReverseLinkedList { public static void main(String[] args) { /*ListNode head = new ListNode(1); head.next = new ListNode(2); head.next.next = new ListNode(3);*/ ListNode head = null; head = reverse(head); while (head != null) { System.out.println(head.val); head = head.next; } } public static ListNode reverse(ListNode head) { List<ListNode> array = new ArrayList<>(); while (head != null) { array.add(head); head = head.next; } if (array.size() > 0) { for (int i = array.size() - 1; i > 0; i--) { array.get(i).next = array.get(i - 1); } array.get(0).next = null; return array.get(array.size() - 1); } return null; } static class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } }