从尾到头打印链表

题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
链表反转
本地ide可用,牛客平台报错…请大佬们帮忙指错

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

堆栈

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> stack=new Stack<Integer>();
        ArrayList<Integer> arrayList=new ArrayList<Integer>();
        while(listNode!=null){
            stack.push(listNode.val);
            listNode=listNode.next;
        }
        while(!stack.empty()){
            arrayList.add(stack.pop());
        }
        return arrayList;
    }
}

递归

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> al=new ArrayList<>();
        if(listNode!=null){
            al=printListFromTailToHead(listNode.next);
            al.add(listNode.val);
        }
        //不能将该句放在此处,因为会报错NullPointerException,当listNode==null时不能调用listNode.val
        al.add(listNode.val);
        return al;
    }
}
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读