Java编程实现从尾到头打印链表代码实例

作者:lilivian 时间:2021-12-28 12:13:41 

问题描述:输入一个链表的头结点,从尾巴到头反过来打印出每个结点的值。

首先定义链表结点


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

思路1:此题明显想到是利用栈的思想,后进先出,先遍历链表,依次将结点值进栈。最后在遍历栈出栈。


public static Stack<Integer> printListReverse_Stack(ListNode listNode){
   Stack<Integer> stack = new Stack<Integer>();
   if(listNode != null){
     ListNode p = listNode;
     while(p != null){
       stack.add(p.val);
       p = p.next;
     }
   }
   return stack;
 }

思路2:直接遍历链表,按照头插法依次插入ArrayList即可


public static ArrayList<Integer> printListFromTailToHead(ListNode listNode){//表头也存储元素
   ArrayList<Integer> print = new ArrayList<Integer>();
   if(listNode == null){
     return print;
   }
   int add = 0;
   ListNode p = listNode;
   while(p != null){
     print.add(0, p.val);
     p = p.next;
   }
   return print;
 }

思路3:可以使用递归的思想(本质也是栈的思想)


public ArrayList<Integer> printListReversely_Recursively(ListNode listNode){
   ArrayList<Integer> print = new ArrayList<Integer>();
   if(listNode == null){
     return print;
   }
   print.addAll(printListReversely_Recursively(listNode.next));
   print.add(listNode.val);
   return print;
 }

来源:http://blog.csdn.net/lilianforever/article/details/51830414

标签:java,链表
0
投稿

猜你喜欢

  • 使用C#创建Windows服务的实例代码

    2022-07-30 05:58:48
  • 一文搞懂Android RecyclerView点击展开、折叠效果的实现代码

    2023-02-17 14:52:24
  • C#实现FTP传送文件的示例

    2022-06-24 01:15:20
  • java语言实现猜数字游戏

    2023-11-24 00:19:38
  • c#开发cad预览图块步骤详解

    2022-12-30 10:49:07
  • SpringBoot使用Redis实现分布式锁

    2021-11-06 20:10:22
  • Java实现快速排序算法的完整示例

    2022-10-15 11:57:40
  • C#中ref和out的区别浅析

    2021-12-22 23:00:50
  • 设计模式系列之组合模式及其在JDK和MyBatis源码中的运用详解

    2022-12-27 12:56:57
  • JWT.net 操作实践方法

    2022-04-09 16:01:28
  • 详解SpringBoot中的tomcat优化和修改

    2022-12-31 04:00:44
  • 关于C#继承的简单应用代码分析

    2021-10-28 13:11:31
  • PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例

    2023-11-26 15:05:59
  • C++ 中二分查找递归非递归实现并分析

    2023-06-19 06:51:31
  • 深入android Unable to resolve target 'android-XX'详解

    2023-05-29 13:21:33
  • 浅谈Java多进程程序的运行模式

    2021-07-06 11:06:49
  • Java 中的变量类型

    2022-05-27 20:00:19
  • DataGridView带图标的单元格实现代码

    2021-08-07 16:50:04
  • 重写hashCode()和equals()方法详细介绍

    2023-11-24 16:13:33
  • centos下GitLab+Jenkins持续集成环境搭建(安装jenkins)

    2023-05-13 05:02:40
  • asp之家 软件编程 m.aspxhome.com