题目:

输入一个链表的头结点,从尾到头反过来打印出每个结点的值。结点定义如下:

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)——从尾到头打印链表的更多相关文章

  1. 《剑指offer》从尾到头打印链表

    本题来自<剑指offer> 从尾到头打印链表 题目: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路: 方案一:首先遍历到尾部,然后从尾部进行到头值进行操作,后进先 ...

  2. 菜鸟刷题路:剑指 Offer 06. 从尾到头打印链表

    剑指 Offer 06. 从尾到头打印链表 class Solution { public int[] reversePrint(ListNode head) { Stack<Integer&g ...

  3. 力扣 - 剑指 Offer 06. 从尾到头打印链表.md

    题目 剑指 Offer 06. 从尾到头打印链表 思路1(递归) 首先先遍历整个脸表,计算出链表的长度(用于初始化数组).然后进行递归,从链表头部递归到尾部,这期间什么都不做,直到递归到最后一个节点的 ...

  4. 【Java】 剑指offer(5) 从尾到头打印链表

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个链表的头结点,从尾到头反过来打印出每个结点的值.结点定义如下: ...

  5. Go语言实现:【剑指offer】从尾到头打印链表

    该题目来源于牛客网<剑指offer>专题.​ 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. Go语言实现: type ListNode struct { Val int ...

  6. [剑指Offer] 3.从尾到头打印链表

    题目描述 输入一个链表,从尾到头打印链表每个节点的值. [思路]用一个vector存储,遍历链表时每次从前面插入 /** * struct ListNode { * int val; * struct ...

  7. [剑指offer]6.从尾到头打印链表+18.删除链表节点

    链表 6.从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 方法一 迭代 创建空列表res,将链表值head.val依次存进res,返回翻转后的res 代码 cl ...

  8. 剑指 Offer 06. 从尾到头打印链表

    链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 标签:链表 题目 输入一个链表的头节点,从尾到头 ...

  9. 剑指offer:从尾到头打印链表

    题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路 在不改变链表结构的前提下,因为单向链表本身的结构是从头到尾的,现在用从尾到头遍历打印,可以联想到“先进后出”, 因此我 ...

  10. 剑指Offer 3. 从尾到头打印链表 (链表)

    题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 题目地址 https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35 ...

随机推荐

  1. Linux系统下vi编辑器的一些简单使用操作

    Linux系统安装vi编辑器 打开终端,输入: sudo apt install vim 然后输入Y等待安装即可 Linux系统下使用vi编辑器的使用 安装好vim后,终端中输入vim即可进入vim编 ...

  2. legend3---18、第一阶段代码完成

    legend3---18.第一阶段代码完成 一.总结 一句话总结: 看起来麻烦或者自己因为厌烦不想做的,其实硬着头皮来做,一下子就做完了 1.layer_mobile的loading层和关闭loadi ...

  3. 文件CRC和MD5校验

    文件CRC和MD5校验 CRC和MD5用于文件和数据的传输校验,以确认是否接收成功. unit CRCMD5; interface { 获取文件CRC校验码 } function GetFileCRC ...

  4. Mac地址转换成long长整型 2

    数据之间的转换可以使用   System.Convert Mac地址转换成long长整型 /// <summary> /// 解析长整形的数据使其转换为macID /// </sum ...

  5. sql查询表的所有字段和表字段对应的类型

    1.查询表的所有字段 select syscolumns.name from syscolumns where id=object_id('写上要查询的表名') 2.查询表的所有字段+表字段对应的类型 ...

  6. body-parser 解析post数据

    安装 $ npm install body-parser API var bodyPaeser =require('body-parser') bodyParse.raw(option) 将请求体内容 ...

  7. PHP根据传入的经纬度,和距离范围,返回所有在距离范围内的经纬度的取值范围

    /** * 根据传入的经纬度,和距离范围,返回所有在距离范围内的经纬度的取值范围 * @param float $lng 经度 * @param float $lat 纬度 * @param floa ...

  8. CSS如何实现把鼠标放在行上整行变色

    CSS如何实现把鼠标放在行上整行变色: 在很多网站都有这样的效果,那就是当鼠标放在一个文章列表行的时候,此行就会显示与其他行不同的颜色,本站的文章列表也具有这样的效果,便于浏览者识别,非常人性化,下面 ...

  9. osg::NodeVisitor example

    [0]osg::Group [1]osg::MatrixTransform [1] osg::MatrixTransform [1]osg::MatrixTransform [2] osg::Geod ...

  10. Q_PROPERTY

    1.在自定义控件中看到这个用法 2.Q_PROPERTY(double Min READ getMin WRITE setMin) 代表当前类有一个double属性叫Min,有一个读函数getMin, ...