题目描述
输入一个链表,从尾到头打印链表每个节点的值。
代码如下
import java.util.*;
/**
* Created by CQH on 2017/9/25.
*/
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class NewCode1 {
//solution1:栈,先进后出
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<>();
while (listNode != null){
stack.push(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> arrayList = new ArrayList<>();
while (!stack.isEmpty()){
arrayList.add(stack.pop());
}
return arrayList;
}
//solution2:递归
ArrayList<Integer> List=new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead2(ListNode listNode) {
if(listNode!=null){
this.printListFromTailToHead2(listNode.next);
List.add(listNode.val);
}
return List;
}
public static void main(String[] args){
ListNode listNode = new ListNode(2);
ListNode listNode1 = new ListNode(3);
ListNode listNode2 = new ListNode(4);
listNode.next = listNode1;
listNode1.next = listNode2;
//test solution1
ArrayList<Integer> res = printListFromTailToHead(listNode);
//test solution2
NewCode1 newCode1 = new NewCode1();
ArrayList<Integer> res2 = newCode1.printListFromTailToHead2(listNode);
for (Integer re : res2) {
System.out.print(re);
}
}
}