zoukankan      html  css  js  c++  java
  • 剑指offer第3题:从尾到头打印链表

    方法一:采用栈来存储,用ArrayList保存。注意题目给出的输出结果是ArrayList

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

      方法二: 递归在本质上是一个栈结构,于是很自然的想到了用递归来实现。注意 ArrayList的创建要在函数的外面,不然每次又去重新创建了该对象,导致最后只有一个元素。static加上去出错,至于原因我还要再看一下。

    import java.util.ArrayList;
    public class Solution {
        ArrayList<Integer> arrayList=new ArrayList<>();
        public  ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            if(listNode!=null){
                if(listNode.next!=null){
                    printListFromTailToHead(listNode.next);
                }
                arrayList.add(listNode.val);
            }
            return arrayList;
        }
    }

    加入在前面加入static之后的结果:在IDE里面是可以跑通的,另外,把static的变量放入方法里面是会有语法错误的(Java有,c、c++没有错误)

     

  • 相关阅读:
    windows 下提取目录下所有文件的文件名
    CDH安装问题
    Netty简单的重连机制
    Netty心跳简单Demo
    Netty心跳之IdleStateHandler
    Netty使用Google的ProtoBuf
    Netty的ChannelHandler,ChannelHandlerContext,ChannelPipeline
    TCP粘包拆包基本解决方案
    TCP粘包拆包场景
    ChannelHandler,ChannelHandlerContext,ChannelPipeline
  • 原文地址:https://www.cnblogs.com/imqsl/p/7976414.html
Copyright © 2011-2022 走看看