/*
题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
思路:1,构造一个链表
2,定义一个栈,将链表元素放入到栈中(利用栈的先进后出,实现从尾到头返回)
3,取出栈的元素放入到ArrayList,然后遍历
*/
package com.kk.基础编程;
import java.util.ArrayList;
import java.util.Stack;
class ListNode { //定义一个链表
int val; //定义链表元素
ListNode next = null; //定义链表的指针
ListNode(int val) { //构造链表
this.val = val;
}
}
public class 从尾到头打印链表 {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<>(); //定义一个栈堆,因为栈堆是先进后出的,取出来的的时候就实现了从尾部打印到头部
while (listNode != null) { //链表不为空w往栈堆里添加链表元素
stack.push(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> list = new ArrayList<>(); //定义一个List
while (!stack.isEmpty()) {
list.add(stack.pop()); //将栈堆离得元素取出来放在list集合中
}
return list; // 返回list
}
}