《剑指Offer》面试题五之从尾到头打印链表
来源:互联网 发布:知秋一生所爱吉他谱 编辑:程序博客网 时间:2024/05/19 15:44
题目描述
输入一个链表的头结点,从尾到头反过来打印每个节点的值!
解题思路1
运用栈的数据结构
先从头到尾依次进栈,再依次出栈。因为栈是先进后出的数据结构,所以实现了链表的翻转。
代码实现
package question;import java.util.*;/** * 作者:白芷 * 时间:2017/3/5 * 说明:从尾到头打印链表的值(栈结构) * */class ListNode{ protected int data; //存储的数据 protected ListNode next; //下一个节点 public void printListRever(ListNode head){ Stack<ListNode> stack=new Stack<ListNode>();//栈 先进后出 ListNode node=head.next; while(node!=null){ //从头到尾进栈 stack.push(node); node=node.next; } while(!stack.isEmpty()){ //再从尾到头依次取出,实现翻转 node=stack.pop(); System.out.print(node.data+" "); } } public ListNode createNode(int data){ //创建链表结点 ListNode node=new ListNode(); node.data=data; return node; }}public class Question5 { public static void main(String[] args) { ListNode head=new ListNode(); ListNode list=head; for(int i=0;i<10;i++){//创建链表 存储 10 9 8 7 6 5 4 3 2 1 (除头结点) list.next=list.createNode(i+1); list=list.next; } head.printListRever(head); } /** * 输出 * 10 9 8 7 6 5 4 3 2 1 * */}
解题思路2
既然用到了栈,那么自然就会想到递归。递归在本质上也是一个栈结构。
代码实现
public void printListRever(ListNode head){ ListNode node=head; if(node.next!=null){ node=node.next; printListRever(node); } System.out.print(node.data+" "); }
使用递归来实现这个问题看起来代码会简洁很多,但是,如果链表太过于长的话,会使函数调用的层级很深,从而可能会使函数的调用栈溢出。
最后
推荐使用解题思路1,这样程序的稳定性会更好一点!
0 0
- 《剑指Offer》面试题五之从尾到头打印链表
- 《剑指Offer》面试题:从尾到头打印链表
- 剑指offer面试题 从尾到头打印链表
- 面试题五:从尾到头打印链表|剑指offer
- 剑指Offer----面试题五:从尾到头打印链表
- 剑指offer面试题5——链表之从尾到头打印链表
- 剑指offer之面试题5:从尾到头打印链表
- 剑指Offer之面试题5:从尾到头打印链表
- 剑指Offer学习之面试题5 : 从尾到头打印链表
- 面试题6:从尾到头打印链表(offer)
- 【面试题五】从尾到头打印链表
- 面试题五: 从尾到头打印链表
- 剑指offer-->面试题5 从尾到头打印链表
- [剑指offer][面试题5]从尾到头打印链表
- 【剑指offer】面试题5:从尾到头打印链表
- 剑指offer 面试题5 从尾到头打印链表(栈实现)
- 剑指offer 面试题5 从尾到头打印链表(递归实现)
- 【剑指offer】面试题5:从尾到头打印链表 java
- 【机房重构】SQL数据库不允许保存更该,组织保存要求重新创建表的更改
- 28. Implement strStr()
- 第五届省赛javaB组- 立方变自身
- 变异opensips遇到的一个问题
- JAVA学习笔记0007----输入输出流
- 《剑指Offer》面试题五之从尾到头打印链表
- WebService(4):CXF
- 第五届省赛javaB组- 三羊献瑞
- C++11 标准新特性:Defaulted 和 Deleted 函数及constexpr
- Android 学习之Drawable-shape使用方法
- js正则实现去除字符串前后空格
- 图论——欧拉回路
- Linux 下的U盘挂载
- C、C++、Python、JavaScript、PHP、Java语法对比(纠正篇)