最近在刷《剑指offer》里的编程题,但是网上关于《剑指offer》的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码(当然也有部分是借鉴了网上别人的解答的,出处未注明敬请之处请指出,侵删),希望能对大家的学习有所帮助。
题目描述:
输入一个链表,从尾到头打印链表每个节点的值。
ps.灰色注释部分已定义好链表的结构类
解答:
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
importjava.util.ArrayList;
importjava.util.Stack;
publicclass Solution {
publicArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack=newStack<Integer>();
//队列和栈是一对好基友,从尾到头打印链表,当然离不开借助栈的帮忙啦
//所以,先把链表里的东西,都放到一个栈里去,然后按顺序把栈里的东西pop出来,就这么简单
while(listNode!=null){
stack.push(listNode.val);
listNode=listNode.next;
}
ArrayList<Integer> list=newArrayList<Integer>();
while(!stack.isEmpty()){
list.add(stack.pop());
}
returnlist;
}
}