题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
解题思路:利用栈先进后出的原理,依次把ArrayList的值入栈,再出栈即可逆序
import java.util.ArrayList; import java.util.List; import java.util.Stack;
public class PrintListFromTailToHead { public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } //输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { // ArrayList<Integer> list=new ArrayList<Integer>(); // ArrayList<Integer> list2=new ArrayList<Integer>(); // try { // if (listNode.next!=null) { // while(listNode.next!=null) { // list.add(listNode.val); // listNode=listNode.next; // } // for (int i = list.size()-1; i >=0; i--) { // list2.add(list.get(i)); // } // // // // // return list2; // }else { // return list; // } // } catch (Exception e) { // return list; // }
Stack<Integer> stack=new Stack<Integer>(); while(listNode!=null){ stack.push(listNode.val); listNode=listNode.next; } ArrayList<Integer> list=new ArrayList<Integer>(); while(!stack.isEmpty()){ list.add(stack.pop()); } return list; } }
|