从尾到头打印链表

2023-05-16

题目描述

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

输出描述:
输出为需要打印的“新链表”的表头
思路:创建一个栈stack将链表依次倒入然后再依次倒出就可以了;
代码如下:
/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.Stack;
import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> stack = new Stack<>();
        while (listNode != null) {
            stack.push(listNode.val);
            listNode = listNode.next;
        }
 
        ArrayList<Integer> list = new ArrayList<>();
        while (!stack.isEmpty()) {
            list.add(stack.pop());
        }
        return list;       
    }
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从尾到头打印链表 的相关文章

  • 寻找下一个结点

    题目描述 请设计一个算法 xff0c 寻找二叉树中指定结点的下一个结点 xff08 即中序遍历的后继 xff09 给定树的根结点指针TreeNode root 和结点的值int p xff0c 请返回值为p的结点的后继结点的值 保证结点的值
  • 最近公共祖先

    题目描述 有一棵无穷大的满二叉树 xff0c 其结点按根结点一层一层地从左往右依次编号 xff0c 根结点编号为1 现在有两个结点a xff0c b 请设计一个算法 xff0c 求出a和b点的最近公共祖先的编号 给定两个int a b 为给
  • 汉罗塔问题递归实现

    代码如下 xff1a include lt stdio h gt long k 61 0 void move char x char y void hn int n char a char b char c int main int n p
  • java中 static变量和方法到底是存在内存什么区域呢?

    需要学习资料的 43 微信公众号 学习资源后台找我 本人比较忙 我看到了会在后台帮你 xff0c 谢谢关注啦 JVM内存总体一共分为了 4个部分 stack segment heap segment code segment data se
  • 循环有序数组最小值

    对于一个有序循环数组arr xff0c 返回arr中的最小值 有序循环数组是指 xff0c 有序数组左边任意长度的部分放到右边去 xff0c 右边的部分拿到左边来 比如数组 1 2 3 3 4 xff0c 是有序循环数组 xff0c 4 1
  • coreApp=true属性及android4.2下多用户进程启动说明

    1 关于coreApp 61 true的说明 xff0c 在manifest中增加该属性 xff0c 其实并不是代表该APP具有系统权限 xff0c 而是把该类app归类为核心APP xff0c 核心app其实也是最小android fra
  • 元素最左出现

    对于一个有序数组arr xff0c 再给定一个整数num xff0c 请在arr中找到num这个数出现的最左边的位置 给定一个数组arr 及它的大小n xff0c 同时给定num 请返回所求位置 若该元素在数组中未出现 xff0c 请返回
  • 局部最小值位置

    定义局部最小的概念 arr长度为1时 xff0c arr 0 是局部最小 arr的长度为N N gt 1 时 xff0c 如果arr 0 lt arr 1 xff0c 那么arr 0 是局部最小 xff1b 如果arr N 1 lt arr
  • 最左原位

    有一个有序数组arr xff0c 其中不含有重复元素 xff0c 请找到满足arr i 61 61 i条件的最左的位置 如果所有位置上的数都不满足条件 xff0c 返回 1 给定有序数组arr 及它的大小n xff0c 请返回所求值 测试样
  • 快速N次方

    如果更快的求一个整数k的n次方 如果两个整数相乘并得到结果的时间复杂度为O 1 xff0c 得到整数k的N次方的过程请实现时间复杂度为O logN 的方法 给定k 和n xff0c 请返回k的n次方 xff0c 为了防止溢出 xff0c 请
  • 二进制插入

    题目描述 有两个32位整数n和m xff0c 请编写算法将m的二进制数位插入到n的二进制的第j到第i位 其中二进制的位数从低位数到高位且以0开始 给定两个数int n 和int m xff0c 同时给定int j 和int i xff0c
  • 二进制小数

    题目描述 有一个介于0和1之间的实数 xff0c 类型为double xff0c 返回它的二进制表示 如果该数字无法精确地用32位以内的二进制表示 xff0c 返回 Error 给定一个double num xff0c 表示0到1的实数 x
  • 最接近的数

    题目描述 有一个正整数 xff0c 请找出其二进制表示中1的个数相同 且大小最接近的那两个数 一个略大 xff0c 一个略小 给定正整数int x xff0c 请返回一个vector xff0c 代表所求的两个数 xff08 小的在前 xf
  • 二叉树的递归实现(先,中,后)

    package erchashu import java util ArrayList import java util List public class diguierchashu public static List lt TreeN
  • 二叉树的非递归实现(先,中,后)

    先序 public void xianxu TreeNode root if root 61 61 null return stack push root while stack isEmpty TreeNode tmp 61 stack
  • 整数转化

    题目描述 编写一个函数 xff0c 确定需要改变几个位 xff0c 才能将整数A转变成整数B 给定两个整数int A xff0c int B 请返回需要改变的数位个数 测试样例 xff1a 10 5 返回 xff1a 4 思路 xff1a
  • 串口日志缺少log怎么办?

    输出到串口的日志级别跟输出到内存的日志级别不一样 配置在 proc sys kernel printk 节点 当前 user 版本配置是 xff1a 4 4 1 4 xff0c 含义如下 xff1a 4 xff1a 串口输出级别 xff0c

随机推荐

  • 奇偶位交换

    题目描述 请编写程序交换一个数的二进制的奇数位和偶数位 xff08 使用越少的指令越好 xff09 给定一个int x xff0c 请返回交换后的数int 测试样例 xff1a 10 返回 xff1a 5 解题思路 xff1a xff08
  • 找出缺失的整数

    题目描述 数组A包含了0到n的所有整数 xff0c 但其中缺失了一个 对于这个问题 xff0c 我们设定限制 xff0c 使得一次操作无法取得数组number里某个整数的完整内容 唯一的可用操作是询问数组中第i个元素的二进制的第j位 最低位
  • 二叉树的序列化

    首先我们介绍二叉树先序序列化的方式 xff0c 假设序列化的结果字符串为str xff0c 初始时str等于空字符串 先序遍历二叉树 xff0c 如果遇到空节点 xff0c 就在str的末尾加上 xff0c 表示这个节点为空 xff0c 节
  • 链表的分化

    对于一个链表 xff0c 我们需要用一个特定阈值完成对它的分化 xff0c 使得小于等于这个值的结点移到前面 xff0c 大于该值的结点在后面 xff0c 同时保证两类结点内部的位置关系不变 给定一个链表的头结点head xff0c 同时给
  • 两个链表的公共值

    现有两个升序链表 xff0c 且链表中均无重复元素 请设计一个高效的算法 xff0c 打印两个链表的公共值部分 给定两个链表的头指针headA 和headB xff0c 请返回一个vector xff0c 元素为两个链表的公共部分 请保证返
  • 链表指定值清除

    现在有一个单链表 链表中每个节点保存一个整数 xff0c 再给定一个值val xff0c 把所有等于val的节点删掉 给定一个单链表的头结点head xff0c 同时给定一个值val xff0c 请返回清除后的链表的头结点 xff0c 保证
  • 链表的回文结构

    请编写一个函数 xff0c 检查链表是否为回文 给定一个链表ListNode pHead xff0c 请返回一个bool xff0c 代表链表是否为回文 测试样例 xff1a 1 2 3 2 1 返回 xff1a true 1 2 3 2
  • 链表判环

    如何判断一个单链表是否有环 xff1f 有环的话返回进入环的第一个节点的值 xff0c 无环的话返回 1 如果链表的长度为N xff0c 请做到时间复杂度O N xff0c 额外空间复杂度O 1 给定一个单链表的头结点head xff08
  • 无环单链表判相交

    现在有两个无环单链表 xff0c 若两个链表的长度分别为m和n xff0c 请设计一个时间复杂度为O n 43 m xff0c 额外空间复杂度为O 1 的算法 xff0c 判断这两个链表是否相交 给定两个链表的头结点headA 和headB
  • 判断直线相交

    题目描述 给定直角坐标系上的两条直线 xff0c 确定这两条直线会不会相交 线段以斜率和截距的形式给出 xff0c 即double s1 xff0c double s2 xff0c doubley1 xff0c double y2 xff0
  • 机器学习实战之k-近邻算法(6)---手写数字识别系统(0-9识别)

    from numpy import import operator from os import listdir 创建数据集 def createDataSet group 61 array 1 0 1 1 1 0 1 0 0 0 0 0
  • 碰撞的蚂蚁

    题目描述 在n个顶点的多边形上有n只蚂蚁 xff0c 这些蚂蚁同时开始沿着多边形的边爬行 xff0c 请求出这些蚂蚁相撞的概率 这里的相撞是指存在任意两只蚂蚁会相撞 给定一个int n 3 lt 61 n lt 61 10000 xff0c
  • 交换练习

    请编写一个算法 xff0c 不用任何额外变量交换两个整数的值 给定一个数组num xff0c 其中包含两个值 xff0c 请不用任何额外变量交换这两个值 xff0c 并将交换后的数组返回 测试样例 xff1a 1 2 返回 xff1a 2
  • 比较练习

    对于两个32位整数a和b xff0c 请设计一个算法返回a和b中较大的 但是不能用任何比较判断 若两数相同 xff0c 返回任意一个 给定两个整数a 和b xff0c 请返回较大的数 测试样例 xff1a 1 2 返回 xff1a 2 思路
  • 寻找奇数出现

    有一个整型数组A xff0c 其中只有一个数出现了奇数次 xff0c 其他的数都出现了偶数次 xff0c 请打印这个数 要求时间复杂度为O N xff0c 额外空间复杂度为O 1 给定整形数组A 及它的大小n xff0c 请返回题目所求数字
  • 寻找奇数出现II

    给定一个整型数组arr xff0c 其中有两个数出现了奇数次 xff0c 其他的数都出现了偶数次 xff0c 找到这两个数 要求时间复杂度为O N xff0c 额外空间复杂度为O 1 给定一个整形数组arr 及它的大小n xff0c 请返回
  • 用JQuery去实现单个表格中的td数据修改

    需要学习资料的 43 微信公众号 学习资源后台找我 本人比较忙 我看到了会在后台帮你 xff0c 谢谢关注啦 JS代码如下 xff1a document ready function var tds 61 34 td 34 tds clic
  • 二维数组中的查找

    题目描述 在一个二维数组中 xff0c 每一行都按照从左到右递增的顺序排序 xff0c 每一列都按照从上到下递增的顺序排序 请完成一个函数 xff0c 输入这样的一个二维数组和一个整数 xff0c 判断数组中是否含有该整数 思路 xff1a
  • 替换空格

    题目描述 请实现一个函数 xff0c 将一个字符串中的空格替换成 20 例如 xff0c 当字符串为We Are Happy 则经过替换之后的字符串为We 20Are 20Happy 思路 xff1a s表示空白字符也就是空格 xff0c
  • 从尾到头打印链表

    题目描述 输入一个链表 xff0c 从尾到头打印链表每个节点的值 输入描述 输入为链表的表头 输出描述 输出为需要打印的 新链表 的表头 思路 xff1a 创建一个栈stack将链表依次倒入然后再依次倒出就可以了 xff1b 代码如下 xf