1.題目描述
輸入一個(gè)鏈表续担,從尾到頭打印鏈表每個(gè)節(jié)點(diǎn)的值赵誓。
2.算法分析
這個(gè)題目有兩種方式可以解。一種方式是采用遞歸司恳,鏈表的首節(jié)點(diǎn)遞歸途乃,直到最后一個(gè)節(jié)點(diǎn)先添加到list里。
第二種方式是利用Stack的特殊性扔傅,先進(jìn)后出耍共,先將所有節(jié)點(diǎn)從頭到尾依次添加到棧烫饼,然后依次出棧。
3.代碼實(shí)例
(1)遞歸
ArrayList<Integer> mList = new ArrayList<Integer>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode){
if(null != listNode)
{
if(null != listNode.next)
{
mList = printListFromTailToHead(listNode.next);
}
mList.add(new Integer(listNode.val));
}
return mList;
}
(2)利用Stack
public ArrayList<Integer> printListFromTailToHead(ListNode listNode){
ArrayList<Integer> mList = new ArrayList<Integer>();
ListNode head = listNode;
Stack<Integer> stack = new Stack<Integer>();
while(null != head)
{
stack.push(new Integer(head.val));
head = head.next;
}
while(!stack.isEmpty())
{
mList.add(stack.pop());
}
return mList;
}