2 从尾到头打印链表
题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
思路
- 创建一个栈
- 从头至尾遍历链表,依次将节点入栈
- 创建一个新链表
- 依次将栈中节点弹出,并加入到新链表中
实现
import java.util.Stack; import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { // 1 创建一个栈 Stack<Integer> stack = new Stack<>(); // 2 从头至尾遍历链表,依次将节点入栈 while (listNode != null) { stack.push(listNode.val); listNode = listNode.next; } // 3 创建一个新链表 ArrayList<Integer> list = new ArrayList<>(); // 4 依次将栈中节点弹出,并加入新链表中 while (!stack.isEmpty()) { list.add(stack.pop()); } return list; } } /* * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } */