剑指offer在线编程——从尾到头打印链表       

问题描述:输入一个链表,从尾到头打印链表每个节点的值.

思考:考虑的比较久的是如何用递归法解决,会好一点。不说了 ,贴出代码。

补充内容:List集合的一些操作集合元素的方法

  void add(int index,Object element):将元素element插入到List集合的index处;

  boolean addAll(int index,Collection c):将集合c所包含的所有元素都插入到List集合的index处;

  Object get(int index):返回集合index索引处的元素;

  int indexof(Object o):返回对象o在List集合中第一次出现的位置索引;

  int lastIndexOf(Object o):返回对象o在List集合中最后一次出现的位置索引;

  Object set(int index,Object element):替换

  Object remove(int index):删除并返回索引处的元素;

  void sort(Comparator c):根据参数对List集合的元素排序;

代码解答:           

/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {  
  public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {

    ArrayList<Integer> printList = new ArrayList<Integer>();
    while(listNode!=null){
      Integer listVal= listNode.val;
      printList.add(0, listVal);    //利用list的add()方法,将遍历的元素添加到列表首部
      listNode = listNode.next;
    }
    return printList;
  }
}

第二种解法:利用迭代方法

public class Solution {
    ArrayList<Integer> arrayList=new ArrayList<Integer>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode!=null){
            this.printListFromTailToHead(listNode.next);
            arrayList.add(listNode.val);
        }
        return arrayList;
    }
posted on 2016-10-30 15:39  看一场塞北的雪  阅读(107)  评论(0)    收藏  举报