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

首先定义链表结点

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; }

最新文章

  1. redis 密码配置
  2. ArrayList和Vector的区别
  3. linux中解压缩并安装.tar.gz后缀的文件
  4. 跟着百度学PHP[4]OOP面对对象编程-5-内部引用$this
  5. yii2-user
  6. HDOJ 2088
  7. 关于使用注解出现BeanCreationException或者NameNotFoundException的解决方法
  8. 增加Swap内存
  9. 《sort帮你排序》-linux命令五分钟系列之二十六
  10. [Head First Python]5. 推导数据:处理数据
  11. openStack error infos 调试
  12. 创建android phonegap项目
  13. Flask從入門到入土(二)——請求响应與Flask扩展
  14. WARING
  15. U盘快速启动热键
  16. C# 委托简单例子
  17. CentOS安装glibc异常Protected multilib versions
  18. 服务器部署nginx报错 nginx: [warn] conflicting server name &quot;localhost&quot; on 0.0.0.0:80, ignored
  19. hibernate从浅至深
  20. Configurations of Vim/GVim of dsp

热门文章

  1. 多线程编程之Windows同步方式
  2. php特殊字符过滤,html标签处理
  3. android studio使用发布者证书调试
  4. HDU3507 print artical
  5. Makefile所有内嵌函数
  6. QRCode.jar生成二维码
  7. Spark RDD简介与运行机制概述
  8. POJ 1611 The Suspects(并查集,简单)
  9. 监控系统一些告警方式对比:短信、Email手机端、IM
  10. mysql5.6优化建议