面试题5-从尾到头打印链表
来源:互联网 发布:手机淘宝有什么活动 编辑:程序博客网 时间:2024/06/06 03:05
从尾到头打印链表
题目描述
输入一个链表,从尾到头打印链表每个节点的值。
代码:输入描述:
输入为链表的表头
输出描述:
输出为需要打印的“新链表”的表头
/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.ArrayList;public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { //特殊情况处理 ArrayList<Integer> list = new ArrayList<Integer>(); if(listNode == null){return list;} //将链表倒置 ListNode p = listNode, q = listNode.next, t; while(q != null){ t = q.next; q.next = p; p = q; q = t; } //将链表放置到ArrayList中 while(p != null){ list.add(p.val); p = p.next; } 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) { //特殊情况处理 ArrayList<Integer> list = new ArrayList<Integer>(); if(listNode == null){return list;} //将链表节点的值依次入栈 Stack<Integer> stack = new Stack<Integer>(); for(ListNode p = listNode; p != null ; p = p.next){ stack.push(p.val); } //出栈的节点依次加到list中 while(!stack.isEmpty()){ list.add(stack.pop()); } return list; }}
注意要引入java.util.Stack。。。
0 0
- 面试题5:从尾到头打印链表
- 面试题5 从尾到头打印链表
- 面试题5 从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5-从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5-从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 【面试题5】从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5: 从尾到头打印链表
- 网络编程---Socket编程
- 【HDU 5584】 LCM Walk(逆推)——2015ACM/ICPC亚洲区上海站
- 学习java的个人经验!
- SQL查询相关技术-6.SQL操作(自选设置条件)
- 【数据结构和算法05】 红-黑树(看完包懂~)
- 面试题5-从尾到头打印链表
- 用Xcode自带的svn搭建本地SVN服务器
- ListView中的CheckBox全选反选
- 链表实现
- eclipse运行报Setting property 'source' to 'org.eclipse.jst.jee.server:project' did not find a matching
- Linux修改进程名称(setproctitle())
- 【原创】k8s源码分析-----kubelet(7)containerRuntime
- 长按listview弹出菜单
- jQuery Validate 教程