zoukankan      html  css  js  c++  java
  • day04

    从头到尾打印链表

    问题:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

    1.利用栈

    public class test01 {
        public int[] reversePrint(ListNode head) {
            //核心思想是利用栈
            //创建栈
            Stack<ListNode> stack = new Stack<ListNode>();
            //创建一个指针,初始时指向头结点
            ListNode temp = head;
            //当指针指向的元素不为空时,进行压栈
            while (temp!=null){
                stack.push(temp);
                temp=temp.next;
            }
            //获取栈的大小
            int size = stack.size();
            //创建一个数组,大小为size
            int[] print = new int[size];
            //从栈内弹出一个结点
            for (int i = 0;i<size;i++){
                print[i] = stack.pop().val;
            }
            return print;
    
        }
    }

    2.递归法

    /*
    算法流程:
    1.递归阶段:每次传入head.next,以head=null为递归终止条件,此时直接返回
    2.回溯阶段:层层回溯时,将当前节点值加入列表
    3.最终,将列表tmp转换成数组res,并且返回即可
     */
    package day04;
    
    import java.util.ArrayList;
    
    public class test02 {
        ArrayList<Integer> tmp = new ArrayList<Integer>();
        public int[] reversePrint(ListNode head){
            recur(head);
            int[] res = new int[tmp.size()];
            for (int i=0;i<res.length;i++){
                res[i] = tmp.get(i);
             return res;
            }
            void recur(ListNode head){
                if (head==null) return;
                recur(head.next);
                tmp.add(head.val);
            }
        }
    }
  • 相关阅读:
    Linux下并发网络设计之I/O复用
    嵌入式系统 Boot Loader
    linux下curl编程
    c语言中-----分配内存函数
    关于typedef之四种用途 和 两个陷进
    Libcurl安装及编译
    linux线程之pthread_join和pthread_detach
    Linux系统源码安装过程中的prefix选项
    linux之线程之互斥
    linux之线程
  • 原文地址:https://www.cnblogs.com/quanmeng/p/12687851.html
Copyright © 2011-2022 走看看