//思路:遍历节点,将其存在栈中,按照栈先进后出的原则,就行反向输出
import java.util.*;
import java.util.ArrayList;
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class aaa {
Stack<Integer> s=new Stack<Integer>();
ArrayList<Integer> a=new ArrayList<Integer>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
s.push(listNode.val);
while(listNode.next!=null){
listNode=listNode.next;
s.push(listNode.val);
}
while(!s.empty()){
a.add(s.pop());
}
return a;
}
public static void main(String[] args){
ListNode l=new ListNode(5);
l.next=new ListNode(6);
aaa a=new aaa();
ArrayList<Integer> b=a.printListFromTailToHead(l);
for (Integer integer : b) {
System.out.println(integer);
}
}
}
//思路二,考虑这个问题是一个有终止的重复过程,可以利用递归实现
import java.util.*;
import java.util.ArrayList;
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class aaa {
ArrayList<Integer> a=new ArrayList<Integer>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode!=null){
printListFromTailToHead(listNode.next);
a.add(listNode.val);
}
return a;
}
public static void main(String[] args){
ListNode l=new ListNode(5);
l.next=new ListNode(6);
aaa a=new aaa();
ArrayList<Integer> b=a.printListFromTailToHead(l);
for (Integer integer : b) {
System.out.println(integer);
}
}
}