时间限制 1s 空间限制 32768K
题目描述输入一个链表,从尾到头打印链表每个节点的值。
【问题分析】JAVA中没有指针,所以我们不能像C语言那样用指针来打印每个节点的值,这里我们用栈来解决本题。
这都是看了网上的分析之后总结理解一下。还有一种就是利用递归的方法。这里就不讲了,可以自行查阅资料。
代码如下:(栈)
package Offer;
import java.util.ArrayList;
import java.util.Stack;
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class LianBiao {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { //<Integer> 范型
//将数据添加到栈中
Stack<Integer> stack = new Stack(); //new一个名为stack 的栈
ArrayList<Integer> arrlist = new ArrayList(); //new一个名为arrlist的数组
while(listNode!=null) //当对象存在值得时候
{
stack.push(listNode.val); //将对象的val值push栈中
listNode = listNode.next; //对象指向下一个对象
}
while(!stack.isEmpty()) { //当栈不为空的时候 出栈添加到数组中 返回数组名
arrlist.add(stack.pop());
}
return arrlist;
}
public static void main(String[] args) {
ArrayList<Integer> arrlist = new ArrayList();
ListNode listNode = new ListNode(20);
LianBiao lbBiao = new LianBiao();
arrlist=lbBiao.printListFromTailToHead(listNode);
int i=arrlist.size();
System.out.println("size="+i+" "+arrlist.get(0));
}
}