剑指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; }}
浙公网安备 33010602011771号