面试题5-从头到尾打印链表
2017-08-13 21:38
295 查看
题目描述
输入一个链表,从尾到头打印链表每个节点的值。
时间限制:1秒 空间限制:32768K
本题知识点: 链表
思路1
递归,实现链表从尾到头插入。
代码
语言:Java 运行时间: 16 ms 占用内存:8320K
思路2
遍历链表的顺序为从头到尾,而输出的顺序确是从尾到头。也就是说第一个遍历的结点最后一个输出,最后一个遍历的结点第一个输出。这就是典型的后进先出,可以用栈实现这种顺序。每经过一个节点的时候,把该结点放入一个栈中。当遍历完整个链表后,再从栈顶开始逐个输出结点的值,顺序反转。
代码
语言:Java
输入一个链表,从尾到头打印链表每个节点的值。
时间限制:1秒 空间限制:32768K
本题知识点: 链表
思路1
递归,实现链表从尾到头插入。
代码
语言:Java 运行时间: 16 ms 占用内存:8320K
/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.ArrayList; public class Solution { ArrayList<Integer> arrayList = new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if(listNode != null){ printListFromTailToHead(listNode.next); arrayList.add(listNode.val); } return arrayList; } }
思路2
遍历链表的顺序为从头到尾,而输出的顺序确是从尾到头。也就是说第一个遍历的结点最后一个输出,最后一个遍历的结点第一个输出。这就是典型的后进先出,可以用栈实现这种顺序。每经过一个节点的时候,把该结点放入一个栈中。当遍历完整个链表后,再从栈顶开始逐个输出结点的值,顺序反转。
代码
语言:Java
import java.util.ArrayList; import java.util.Stack; public class Main{ public static void main(String[] args){ } public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> stack = new Stack<Integer>();//栈 ArrayList<Integer> arrayList = new ArrayList<Integer>(); while (listNode != null){//遍历链表,入栈 stack.push(listNode.val); listNode = listNode.next; } while(!stack.isEmpty()){//出栈 arrayList.add(stack.pop()); } return arrayList; } }
相关文章推荐
- 面试题5:从头到尾打印链表
- 剑指offer面试题之从头到尾打印链表
- 剑指offer面试题5 从头到尾打印链表(java)
- 《剑指offer》面试题5 从头到尾打印链表
- 剑指offer--面试题6:从头到尾打印链表
- 剑指offer面试题5 从头到尾打印链表(java)
- 面试题5 从头到尾打印链表
- 剑指offer编程题Java实现——面试题5从头到尾打印链表
- 《剑指offer》(面试题5):从头到尾打印链表
- 面试题5:从头到尾打印链表
- 《剑指Offer》面试题-从头到尾打印链表
- 剑指Offer-【面试题05:从头到尾打印链表】
- 单链表面试题(二)从头到尾打印单链表
- 剑指offer 面试题5——从头到尾打印链表
- 《剑指Offer》面试题-从头到尾打印链表
- 【剑指offer】面试题6:从头到尾打印链表
- 面试题5 从头到尾打印链表
- C++笔试题(剑指offer 面试题5 将单向链表数据,逆向打印输出)