题目描述:
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
结点定义:
class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }
code:
1. 使用头插法:
import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { //如果链表为空,返回空list if (null == listNode) { return new ArrayList<>(); } //定义一个新链表的头节点 ListNode head = new ListNode(0); //遍历链表 while (null != listNode) { //定义新节点 ListNode temp = new ListNode(listNode.val); //新节点的next指向head的next temp.next = head.next; //head的next指向新节点 head.next = temp; //原链表指向下一个 listNode = listNode.next; } //头节点指向下一个 head = head.next; //定义list作为返回值 ArrayList<Integer> list = new ArrayList<>(); //遍历链表 while (null != head) { //list添加当前节点的值 list.add(head.val); //链表指向下一个 head = head.next; } //返回list return list; } }
2. 使用list中方法:
import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { //如果链表为空,返回空list if (null == listNode) { return new ArrayList<>(); } ArrayList<Integer> list = new ArrayList<>(); //遍历链表 while (null != listNode) { //list第一个位置添加当前节点的值 list.add(0, listNode.val); //链表指向下一个 listNode = listNode.next; } //返回list return list; } }