剑指Offer—— 题5 从尾到头打印链表 Java版
2015-11-25 15:32
656 查看
题目描述:
输入一个链表,从尾到头打印链表每个节点的值。
解题思路:
在不改变原链表结构情况下,必然想到:先遍历链表,然后是典型的“先进后出”。
方法一:
个人喜欢递归。
方法二:
使用库函数,栈。
输入一个链表,从尾到头打印链表每个节点的值。
解题思路:
在不改变原链表结构情况下,必然想到:先遍历链表,然后是典型的“先进后出”。
方法一:
个人喜欢递归。
/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.ArrayList; import java.util.Stack; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list = new ArrayList<Integer>(); ListNode preNode = listNode; if(preNode != null){ //若后面还有节点,则递归调用 if(preNode.next != null){ list = printListFromTailToHead(preNode.next); } //否则把后面的值加入list list.add(preNode.val); } return list; } }
方法二:
使用库函数,栈。
/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.ArrayList; import java.util.Stack; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> stack = new Stack<Integer>(); //遍历,压栈 while(listNode != null){ stack.push(listNode.val); listNode = listNode.next; } ArrayList<Integer> list = new ArrayList<Integer>(); //出栈 while(!stack.isEmpty()){ list.add(stack.pop()); } return list; } }
相关文章推荐
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
- javascript之dom编程(3):常用对象2
- HTML入门(3)-条件注释判断浏览器版本
- Bootstrap按钮组件
- Bootstrap学习------按钮
- javascript之dom编程(2):常用对象1
- Javascript设计模式理论与实战:状态模式
- JS实现键盘监听(包括组合键)
- jquery/js实现一个网页同时调用多个倒计时(最新的)
- javascript之dom编程(1):简单用法
- ichartjs
- html5开发之viewport使用
- jquery ajax 同步查询
- jQuery Ajax 实例 全解析
- common.js js中常用方法
- 一款比较好用的JS时间控件-laydate
- jquery动画
- 用Javascript评估用户输入密码的强度
- JS模拟select下拉菜单
- js获取图片宽高的方法