剑指offer--从尾到头打印链表

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

java

方法一:递归

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;

        }

}

方法二:利用栈

import java.util.Arraylist;

import java.util.Stack;

public class Solution{

        public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {

                Stack<Integer> stack = new Stack<Integer>();

                while(listNode != null){

                        stack.push(listNode.val);

                        listNode = listNode.next;

                }

                ArrayList<Integer> list = new ArrayList<>();

                while(!stack.isEmpty()){
                       list.add(stack.pop());

                }

                return list;

        }

}

方法三:利用指针

public class Solution {

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

        }   

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容