從尾到頭打印鏈表
題目描述
輸入一個鏈表,從尾到頭打印鏈表每個節點的值。
思路
0-0再看牛客前面的劍指offer的題目竟然不太難,反向輸出,第一反應想到了stack,所以不解釋了,看題目要求輸出Arraylist,仔細意向ArrayList隨機訪問的效率要遠遠高於linkedList,人家給個方法名字都是有意義的。
代碼
import java.util.ArrayList;
import java.util.Stack;
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class O2 {
public static void main(String[] args){
ListNode l1=new ListNode(1);
ListNode l2=new ListNode(2);
ListNode l3=new ListNode(3);
l1.next=l2;
l2.next=l3;
for(int i:printListFromTailToHead(l1)){
System.out.print(i+ " ");
}
}
//選擇ArrayList是因爲查詢效率高
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<>();
while (listNode != null) {
stack.push(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> list = new ArrayList<>();
while (!stack.isEmpty()) {
list.add(stack.pop());
}
return list;
}
}