题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
思路:
对于单向链表我们我们只能从头向尾部读取,无法从尾部向头读取链表,将读取的数据压栈,遍历完数组时压栈完成,再读取栈,就完成了从尾至头的顺序返回链表。
代码:
import java.util.ArrayList;
import java.util.Stack;
import org.junit.Test;
public class LinkNode3 {
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<Integer>();
while(listNode != null){
stack.push(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> list = new ArrayList<Integer>();
while(!stack.empty()){
list.add(stack.pop());
}
return list;
}
@Test
public void Test(){
ListNode listNode = new ListNode(10);
ListNode listNode1 = new ListNode(11);
ListNode listNode2 = new ListNode(12);
ListNode listNode3 = new ListNode(13);
ListNode listNode4 = new ListNode(14);
listNode.next = listNode1;
listNode1.next = listNode2;
listNode2.next = listNode3;
listNode3.next = listNode4;
ArrayList<Integer> list = printListFromTailToHead(listNode);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}