剑指offer(5)——从尾到头打印链表
题目:
输入一个链表的头结点,从尾到头反过来打印出每个结点的值。结点定义如下:
public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }
思路:
- 从尾到头,我们首先想到的就是栈这个结构,栈是先进先出的结构,先进来的元素最后再出去,所以本题我们可以考虑用栈来解决
- 想到栈的同时我们也应该联想到递归
代码:
import java.util.Stack; import org.junit.jupiter.api.Test; /** * 反向打印链表 * @author wydream * */ public class PrintList { class ListNode{ Object key; ListNode next; public ListNode(Object key) { this.key=key; this.next=null; } } //采用栈 public void printListRever(ListNode node) { Stack<ListNode> stack=new Stack<ListNode>(); while(node!=null) { stack.push(node); node=node.next; } while(!stack.empty()) { System.out.println(stack.pop().key); } } //采用递归 public void printListReverdg(ListNode node) { if(node!=null) { printListReverdg(node.next); System.out.println(node.key); }else { return; } } //=============测试代码============= @Test public void test() { ListNode ListNode1 = new ListNode(1); ListNode ListNode2 = new ListNode(2); ListNode ListNode3 = new ListNode(3); ListNode ListNode4 = new ListNode(4); ListNode ListNode5 = new ListNode(5); ListNode1.next=ListNode2; ListNode2.next=ListNode3; ListNode3.next=ListNode4; ListNode4.next=ListNode5; System.out.println("采用栈:"); printListRever(ListNode1); System.out.println("采用递归:"); printListReverdg(ListNode1); } }
剑指offer(5)——从尾到头打印链表的更多相关文章
- 《剑指offer》从尾到头打印链表
本题来自<剑指offer> 从尾到头打印链表 题目: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路: 方案一:首先遍历到尾部,然后从尾部进行到头值进行操作,后进先 ...
- 菜鸟刷题路:剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表 class Solution { public int[] reversePrint(ListNode head) { Stack<Integer&g ...
- 力扣 - 剑指 Offer 06. 从尾到头打印链表.md
题目 剑指 Offer 06. 从尾到头打印链表 思路1(递归) 首先先遍历整个脸表,计算出链表的长度(用于初始化数组).然后进行递归,从链表头部递归到尾部,这期间什么都不做,直到递归到最后一个节点的 ...
- 【Java】 剑指offer(5) 从尾到头打印链表
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个链表的头结点,从尾到头反过来打印出每个结点的值.结点定义如下: ...
- Go语言实现:【剑指offer】从尾到头打印链表
该题目来源于牛客网<剑指offer>专题. 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. Go语言实现: type ListNode struct { Val int ...
- [剑指Offer] 3.从尾到头打印链表
题目描述 输入一个链表,从尾到头打印链表每个节点的值. [思路]用一个vector存储,遍历链表时每次从前面插入 /** * struct ListNode { * int val; * struct ...
- [剑指offer]6.从尾到头打印链表+18.删除链表节点
链表 6.从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 方法一 迭代 创建空列表res,将链表值head.val依次存进res,返回翻转后的res 代码 cl ...
- 剑指 Offer 06. 从尾到头打印链表
链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 标签:链表 题目 输入一个链表的头节点,从尾到头 ...
- 剑指offer:从尾到头打印链表
题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路 在不改变链表结构的前提下,因为单向链表本身的结构是从头到尾的,现在用从尾到头遍历打印,可以联想到“先进后出”, 因此我 ...
- 剑指Offer 3. 从尾到头打印链表 (链表)
题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 题目地址 https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35 ...
随机推荐
- Java 面向对象(十四)
反射 反射是框架设计的灵魂 一.类的加载时机 当程序要使用某个类时,如果该类还未被加载到内存中,系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载 :就是指将class文件读入内存,并为 ...
- nrm切换npm包源
nrm可以随时切换npm包的源 npm install -g nrm 安装nrm完成 查看nrm源 nrm ls 切换源 npm use npm #也可以切换成其他源
- 配置 阿里云ECS Ubuntu 16.04 64bit 桌面环境
1. 步骤 安装软件 修改root权限 重启 2. 详情 1. 安装软件 创建脚本文件(例如:desktopSetting.sh),并输入以下内容: #!/bin/bash #更新软件库 apt-ge ...
- javascript 的垃圾回收机制讲一下
定义:指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束. 像 C 这样的编程语言,具有低级内存管理原语,如 malloc()和 free().开发人员使用这些原语显式地对操作系统的内存进行 ...
- css让文字竖着排列 writing-mode 属性
writing-mode 属性 writing-mode 属性定义了文本在水平或垂直方向上如何排布. 语法格式如下: writing-mode: horizontal-tb | vertical-rl ...
- bootargs中的rootwait 与rootdelay有什么区别?
答: rootwait是无限期等待,而rootdelay可以指定等待的时间,更加灵活.
- JS-数组与伪数组
数组与伪数组 把符合以下条件的对象称为伪数组: 具有length属性 按索引方式存储数据 不具有数组的push,pop等方法 伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行 ...
- python 过滤 b'及提取 cmd命令返回值
#!/usr/bin/env python # -*- coding:utf-8 -*- import subprocess import datetime plist = [] p = subpro ...
- Ubuntu + Apache2 环境下用C编写 一个简单的cgi脚本
我只学习过c语言,没有学习过prel,网上很多教程都是针对prel的,很少有针对c的.自己在Ubuntu下鼓捣了一下午,也总算是用c成功编写了一个helloworld的cgi,算是cgi入门的第一步. ...
- dapper 异步修改方法
public async Task<int> UpdateStatusByWarehouseId(bool isValid, int warehouseId) { using (var c ...