zoukankan      html  css  js  c++  java
  • 剑指offer3:从尾到头打印链表

    题目描述:

    从尾到头打印链表:输入一个链表,从尾到头打印链表每个节点的值。

    思路:

    尽量不改变原输入数据的结构,比如不要将指针改为从尾到头
    非递归:使用栈操作,从头到尾入栈,从尾到头出栈即可

    递归:更加简洁的代码,当访问某个节点时,先输出它的后一个节点

     1 public class Lianbiaotoudaowei {
     2     //非递归,栈操作
     3     public ArrayList<Integer> printListFromTailToHead(ListNode listNode){
     4         Stack<Integer> stack = new Stack<>();
     5         ArrayList<Integer> list = new ArrayList<Integer>();
     6         while(listNode!=null){
     7             stack.add(listNode.val);
     8             listNode = listNode.next;
     9         }
    10         while(!stack.isEmpty()){
    11             list.add(stack.pop());
    12         }
    13         return list;
    14     }
    15     //递归:
    16     public ArrayList<Integer> printListFromTailToHead(ListNode listNode){
    17         ArrayList<Integer> list = new ArrayList<>();
    18         if(listNode!=null){
    19             if(listNode.next!=null){
    20                 list = printListFromTailToHead(listNode.next);
    21             }
    22             list.add(listNode.val);
    23         }
    24         return list;
    25     }
    26     public static void main(String[] args) {
    27         // TODO Auto-generated method stub
    28         ListNode listNode = new ListNode(1);
    29         listNode.next = new ListNode(2);
    30         listNode.next = new ListNode(3);
    31         listNode.next = new ListNode(4);
    32         listNode.next = new ListNode(5);
    33         
    34         Lianbiaotoudaowei lianbiaotoudaowei = new Lianbiaotoudaowei();    
    35         System.out.println(lianbiaotoudaowei.printListFromTailToHead(listNode));
    36     }
    37     
    38 }



  • 相关阅读:
    mysql六:数据备份、pymysql模块
    mysql五:索引原理与慢查询优化
    mysql四:数据操作
    sql查询作业答案
    mysql四-2:多表查询
    mysql四-1:单表查询
    mysql五补充部分:SQL逻辑查询语句执行顺序
    mysql三-3:完整性约束
    mysql三:表操作
    mysql三-2:数据类型
  • 原文地址:https://www.cnblogs.com/zlz099/p/8532845.html
Copyright © 2011-2022 走看看