今天继续练习剑指offer上练习题,该博客只是记录自己学习过程,欢迎各位博友,批评指正。
三、输入一个链表,从尾到头打印每个节点的数据
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。
解题思路:
从头到尾打印出每个节点的值,我们自然想到遍历,但是题目要求反过来打印,也就是遍历时,第一个节点的数据,确是最后一个打印出来,这时候自然想到栈。先进后出,因此,本次我们想到遍历后将节点数据保存在一个栈中,再输出栈即可。
java代码:
public class CongWeiDaoTouDaYinLianBiao {
public ArrayList<Integer> printListFromTainToHead(ListNode ListNode){
ArrayList<Integer> List = new ArrayList<Integer>();
ArrayList<Integer> List2 = new ArrayList<Integer>();
ListNode n = LiseNode;
while(n != null){
List.add(n.val);
n = n.next;
}
for(int i = List.size()-1; i >= 0; i--){
List2.add(List.get(i));
System.out.println(List.get(i));
}
return List2;
}
}