/*
* 面试题6:从头到尾打印链表
*/
import java.util.ArrayList;
import java.util.Stack;
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
/**
* 输入一个链表,从尾到头打印链表每个节点的值。
思路:借助栈实现,或使用递归的方法。
* @author juaner
*
*/
public class ListFromTailToHead {
public static void main(String[] args) {
ListNode listNode = new ListNode(1);
listNode.next = new ListNode(3);
listNode.next.next = new ListNode(4);
listNode.next.next.next = new ListNode(0);
ListFromTailToHead lftth = new ListFromTailToHead();
System.out.println(lftth.printListFromTailToHead(listNode));
}
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<Integer>();
if (listNode == null)
return list;
Stack<Integer> stack = new Stack<Integer>();
//队列和栈是一对好基友,从尾到头打印链表,当然离不开借助栈的帮忙啦
//所以,先把链表里的东西,都放到一个栈里去,然后按顺序把栈里的东西pop出来,就这么简单
while (listNode != null) {
stack.push(listNode.val);
listNode = listNode.next;
}
while (!stack.isEmpty()) {
list.add(stack.pop());
}
return list;
}
}
面试题6:从头到尾打印链表
最新推荐文章于 2020-03-31 15:20:54 发布