伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

《剑指offer》05: 从尾到头打印链表

来源:本站原创 浏览:50次 时间:2023-07-22
❝首先学习计算机科学及理论。接着形成自己编程的风格。然后把这一切都忘掉,尽管改程序就是了。—— 小浩❞
从尾到头打印链表
题目描述

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

原题题目

解法

解法一【推荐】
遍历链表,每个链表结点值 push 进栈,最后将栈中元素依次 pop 到 list 中。

/***    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 {    /**     * 从尾到头打印链表     * @param listNode 链表头节点     * @return list     */    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {        ArrayList<Integer> res = new ArrayList<>();        if (listNode == null) {            return res;        }        Stack<Integer> stack = new Stack<>();        while (listNode != null) {            stack.push(listNode.val);            listNode = listNode.next;        }        while (!stack.isEmpty()) {            res.add(stack.pop());        }        return res;    }}

解法二【不推荐】
利用递归方式:

若不是链表尾结点,继续递归;
若是,添加到 list 中。
这种方式不推荐,当递归层数过多时,容易发生 Stack Overflow。

/***    public class ListNode {*        int val;*        ListNode next = null;**        ListNode(int val) {*            this.val = val;*        }*    }**/import java.util.ArrayList;import java.util.Stack;/** * @author bingo * @since 2018/10/28 */public class Solution {    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {        ArrayList<Integer> res = new ArrayList<>();        if (listNode == null) {            return res;        }        addElement(listNode, res);        return res;    }    private void addElement(ListNode listNode, ArrayList<Integer> res) {        if (listNode.next != null) {            // 递归调用            addElement(listNode.next, res);        }        res.add(listNode.val);    }}
思路扩展

测试用例
  1. 功能测试(输入的链表有多个结点;输入的链表只有一个结点);
  2. 特殊输入测试(输入的链表结点指针为空)。本题考点


    我把我写的所有题解整理成了一本电子书放在了 github 上,三天内冲击到 github 排行榜榜首!近 5w 人下载阅读!要获取的话,直接进入下方链接就可以了(记得给我点个 star):

https://github.com/geekxh/hello-algorithm

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net