[剑指offer]从尾到头打印链表
题目:
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList
正常代码:
package offer;
import java.util.ArrayList;
import java.util.Stack;
public class Offer_3 {
public static void main(String[] args) {
ListNode list1= new ListNode(1);
ListNode list2 = new ListNode(2);
ListNode list3 = new ListNode(3);
list1.next = list2;
list2.next = list3;
list3.next = null;
ArrayList<Integer> list = printListFromTailToHead(list1);
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
}
public static ArrayList<Integer> printListFromTailToHead(ListNode listnode){
Stack<Integer> temp = new Stack<>();
ArrayList<Integer> newList = new ArrayList<>();
ListNode t = listnode;
//将数据都先存入栈中
while( t != null ){
temp.push(t.val);
t = t.next;
}
//遍历栈
while(!temp.empty()){
newList.add(temp.pop());
}
return newList;
}
static class ListNode {
int val;
ListNode next = null;
ListNode(int val){
this.val = val;
}
}
}
在牛客上交题的代码:
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public static ArrayList<Integer> printListFromTailToHead(ListNode listnode){
Stack<Integer> temp = new Stack<>();
ArrayList<Integer> newList = new ArrayList<>();
ListNode t = listnode;
//将数据都先存入栈中
while( t != null ){
temp.push(t.val);
t = t.next;
}
//遍历栈
while(!temp.empty()){
newList.add(temp.pop());
}
return newList;
}
}