题目
输入一个链表,从尾到头打印链表每个节点的值
思路
- 使用栈
- 利用栈的后进先出,将链表全部入栈再依次出栈 - 使用递归
解答
- 栈
import java.util.ArrayList;
import Java.util.Stack;
class ListNode{
int val;
ListNode next=null;
public ListNode(int val){
this.val=val;
}
}
public class PrintListFromTailToHead {
public ArrayList<Integer> printListFromTailToEnd(ListNode listNode){
ArrayList array=new ArrayList();
Stack stack=new Stack();
while(listNode!=null){
stack.push(listNode.val);
listNode=listNode.next;
}
while(!stack.isEmpty()){
array.add(stack.pop());
}
return array;
}
}
- 递归
import java.util.ArrayList;
import java.util.Stack;
class ListNode{
int val;
ListNode next=null;
public ListNode(int val){
this.val=val;
}
}
public class PrintListFromTailToHead {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList array=new ArrayList();
ListNode pNode=listNode;
if(listNode==null)
return array;
getValue(array,pNode);
return array;
}
public void getValue(ArrayList array,ListNode listnode){
if(listnode!=null){
getValue(array,listnode.next);
array.add(listnode.val);
}
}
}