从头到尾打印链表 java
题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.*;
public class Solution {
public ArrayList printListFromTailToHead(ListNode listNode) {
Stack s = new Stack<>();
ArrayList ai = new ArrayList<>();
while(listNode != null) {
//是通过将元素追加的数组的末尾中
s.push(listNode.val);
listNode = listNode.next;
}
while(!s.empty()) {
//Stack中的empty()函数会调用vector中的size()函数,再判断是否为空
//取出栈顶元素,并将该元素从栈中删除(是取出数组末尾的元素,然后将该元素从数组中删除)
ai.add(s.pop());
}
return ai;
}
}/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.*;
public class Solution {
public ArrayList printListFromTailToHead(ListNode listNode) {
ArrayList list = new ArrayList<>();
ArrayList al = new ArrayList<>();
while(listNode != null){
list.add(listNode.val);
listNode = listNode.next;
}
for(int i = list.size() - 1; i >= 0; i--){
al.add(list.get(i));
}
return al;
}
}