校招准备系列:每天一道算法题(12)-从尾到头打印链表

来源:互联网 发布:iptv服务器软件 编辑:程序博客网 时间:2024/05/20 04:13

从尾到头打印链表

此题来自 剑指offer

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

方法一:递归

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;    }}  

方法二:遍历

/***    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> list = new ArrayList<Integer>();        ListNode pre = null;        ListNode next = null;        while(listNode!=null){            next = listNode.next;            listNode.next = pre;            pre = listNode;            listNode = next;        }        while(pre!=null){            list.add(pre.val);            pre = pre.next;        }        return list;    }}

方法三:

import java.util.ArrayList;import java.util.Collections;public class Solution {    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {        ArrayList<Integer> list = new ArrayList<Integer>();        while(listNode != null){            list.add(listNode.val);            listNode = listNode.next;        }        Collections.reverse(list);//使用Collections的reverse方法,直接将list反转        return list;    }}
阅读全文
0 0
原创粉丝点击