从尾到头打印链表
题目描述
输入一个链表,从尾到头打印链表每个节点的值。
思路
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;
}
}