从尾到头打印链表

从尾到头打印链表(Java) 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。链表的结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext; }第一思路:我的第一思路是从头到尾输出类比数组那样,于是乎想把链表中的链表结点的指针反转过来,改变链表的方向,然后实现从头到尾输出(结果为从尾到头输出),可是发现修改链表的指针,反转链表的结构比较麻烦。于是乎放弃。(改... 阅读详情

题目描述

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

源代码:

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/

解法一:
import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> list=new ArrayList<Integer>();
        ListNode next = null;
        ListNode pre = null;
        while(listNode!=null){

//这个题目的关键是需要先将链表翻转,具体是将链表的指针指向它的前一个节点,这里的listNode是链表的头指针。
            next = listNode.next;
            listNode.next=pre;
            pre = listNode;
            listNode = next;
        }
        while(pre!=null){
            list.add(pre.val);
            pre=pre.next;
        }
        return 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 {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> list=new ArrayList<Integer>();
       Stack<Integer> s=new Stack<Integer>();
        while(listNode!=null){
            s.push(listNode.val);
            listNode=listNode.next;
        }
        while(!s.empty())
            list.add(s.pop());
        return list;
    }
}

单链表的逆置和从尾到头打印单链表 从尾到头打印单链表:递归法。先声明一个节点为头结点(cur = *head),当cur-&gt;next为空时,输出打印cur节点。否则,就一直调用该节点。单链表逆置:头插法。即删掉头结点的下一个节点,然后把删掉的节点进行该链表的头插。例如:这样,就可以把节点b插到a的前面。以此类推,知道cur-&gt;next==NULL为止。单链表逆置还有一种方法:初始化3个节点,然后按照顺序以此进行交换赋值... 阅读详情

相关推荐

深信服桌面云实战:从零部署到高效运维的配置全景指南

本文详细介绍了深信服桌面云从零部署到高效运维的全流程配置指南,涵盖硬件规划、平台部署、虚拟桌面发布、终端管理及性能优化等关键环节。特别强调了双万兆网络架构、分布式存储配置和智能调度功能的应用,帮助用户实现高性能、高可用的虚拟桌面环境。

weixin_28568819的博客 402

牛客题解 | 从尾到头打印链表

牛客题库题解

wc529065的博客 991

OpenHarmony实战开发-如何实现文件分布式同步编辑

在分布式文件场景中,分布式设备管理包含了分布式设备搜索、分布式设备列表弹窗、远端设备拉起三部分。首先在分布式组网内搜索设备,然后把设备展示到分布式设备列表弹窗中,最后根据用户的选择拉起远端设备。两台设备组网的分布式场景是工作中常常需要的。这样的分布式场景有助于加快工作效率,减少工作中的冗余,本例将为大家介绍如何实现上述功能。​ (2)订阅分布式数据变化:通过this.distributedObject.on(‘status’, this.statusCallback)监听分布式数据对象的变更。

2401_82546228的博客 754

从尾到头打印链表——js

替换空格 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路: (1)正则 (2)split()方法 代码 //split方法 function replaceSpace(str) { return str.split(" ").join("%20"); } //...

qq_40608516的博客 813

自动化测试-自愈技术

随着人工智能的发展,作为一名软件测试工程师,相信大家都会思考如何把这一前沿技术引入到我们的自动化测试当中,想一万遍不如做一遍。,传递当前页面状态,获取之前成功的定位器路径,比较它们,并生成修复的定位器列表。如果修复成功,我们可以使用 Healenium Idea 插件更新我们的自动化测试代码:插件使用修复定位器寻找修复和更新测试代码。的旧定位器去定位按钮的时候,脚本就会报错,提示 “NoSuchElement”的错误异常。现在,我们假设开发人员变更了应用程序的UI界面,改变了这个按钮的id属性,从。

qq_58223744的博客 2661

OpenCV视频防抖算法实现与优化指南

本文详细解析了如何使用OpenCV实现视频防抖算法。通过特征点检测与光流跟踪估算帧间运动,利用滑动平均平滑运动轨迹,并应用仿射变换重塑视频帧。文章提供了完整的代码实现、参数调优指南及黑边处理等优化技巧,帮助开发者高效处理手持拍摄等场景下的视频抖动问题。

weixin_29062823的博客 342

单链表从尾到头打印的四种方法

一、单链表从尾到头打印的四种方法。 1、正常从尾到头打印。 用一个尾指针指到最后,尾指针每次前移移位,遇到尾指针则打印。 void EndToFirstPrintNode(SListNode*ps) //正常从尾到头打印 { SListNode *cur=ps; SListNode *tail=NULL; while (ps != tail) { cur=ps; while (tail != cur->_next) ...

weixin_58368590的博客 2021

从ADRV9002到ADRV9003:手把手教你移植FPGA驱动,避开那些官方没说的坑

本文详细介绍了从ADRV9002到ADRV9003的FPGA驱动移植实战指南,重点解析了两者在硬件架构上的关键差异,如通道配置和DPD功能的移除。通过提供完整的移植步骤、调试技巧和性能优化建议,帮助工程师避开官方文档未提及的常见陷阱,实现高效驱动开发。

weixin_28738397的博客 177

【链表】剑指Offer: 从尾到头打印链表

【在线编程】从尾到头打印链表 【问题描述】 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 【解题思路 & Java实现】 方法一:递归。 /** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * ...

journey_TripleP的博客 201

嘉立创EDA报错:元件引脚与焊盘未对应报错解决记录

原件引脚与焊盘未对应报错解决方法,一文总结!

2303_77013775的博客 1万+

FANUC机器人有关动作速度倍率的相关系统变量-解释说明

FANUC机器人有关动作速度倍率的相关系统变量-解释说明 1.$SHFTOV_ENB 默认值:0 名称:位移倍率的有效/无效 含义:位移倍率功能,通过按住SHIFT键的同时按下倍率键,将速度倍率更改为5档 设定值:有效1; 无效0. 有SHFIT键:微速–低速–5%–50%–100% 2.MCRGRP[GROUP].MCR_GRP[GROUP].MCRG​RP[GROUP].PRGOVERRIDE 默认值:100 名称:程序倍率 含义:设定程序再生时的、机器人动作速度比率 设定值:0~100(%) 3.S

Robot_PLC_HMI_Automation 9322

从尾到头打印链表 java

输入一个链表的头节点,从尾到头反过来打印输出每个节点的值。链表节点定义如下: public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } 首先会想到的方法是改变链表的方向,然后就可以从头到尾输出。 不过通常打印是一个只读操作,我们不希望打印时修改内容。 当我们遍历链表的时候 顺序是从头到尾,可输出的顺序是要求从尾到头,很容易想到,我们可以用栈(先进后出,后进先出)来实现这种顺序。 pu

Cangwuwuwu 185

零基础学习CANoe Panel(5)——改变变量的值,控件图像也改变,这是怎么回事?

Panel 中控件的图像随着值变化,是怎么回事?

蚂蚁小兵 2146

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

链表一般是从头到尾打印比较方便,本题要从尾到头打印,可以想成是后进先出,是一个栈结构。而递归就是一个栈结构。 /** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * ...

ritagreen123的博客 348

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

剑指offer 反转链表递归 非递归 / 从尾到头打印链表

目录反转链表1.递归2.非递归从尾到头打印链表1.非递归 反转链表的题目是链表中非常基础的题目,因此也是面试很常考的题目,对于反转链表需要掌握递归和非递归两种形式。 反转链表 1.递归 对于递归的方法,我们要知道递归的结构,我们要反转head开始的链表,需要先反转head->next的链表,head->next反转之后,可以进行核心的操作语句head->next->next...

sixgold的博客 291

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

[剑指Offer]-从尾到头打印链表

题目描述 输入一个链表的头节点,从尾到头反过来打印出每个节点的值。 解题思路 借助栈这种数据结构,将链表的值读入栈中,由于栈先入后出的原则。将栈中的值弹出就实现了链表的逆序打印。 递归实现,当需要读一个节点的值得时候先读取下一个节点得值。递归在本质上就是一个栈结构。 直接将链表结构改变实现反转。后续… 算法图解 参考代码: package offer; import java.util.S...

LeoByte的编程驿站 593

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

链表的从尾到头打印(四种方法)

一、单链表从尾到头打印的四种方法。 1、正常从尾到头打印。 用一个尾指针指到最后,尾指针每次前移移位,遇到尾指针则打印。void EndToFirstPrintNode(SListNode*ps) //正常从尾到头打印 { SListNode *cur=ps; SListNode *tail=NULL; while (ps != tail) { c

龙跃十二 8248
上一篇: 替换空格
下一篇: 重建二叉树
It_BeeCoder
博客等级 码龄10年 967粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值