面试题5: 从尾到头打印链表
来源:互联网 发布:css布局 知乎 编辑:程序博客网 时间:2024/06/05 07:06
一. 题目
输入一个链表的头结点,从尾到头反过来打印出每个节点的值.
代码请到我的代码库中下载 Point2Offer
二. 代码
package com;import java.util.Stack;/** * 剑指offer: 从尾到头输出列表 * 两种考虑:1.不改变链表结构(栈,递归);2.改变链表结构(遍历/递归,见链表反转,这里不考虑) * 测试用例三种(链表有多个节点,一个节点核链表为空) * @author dingding * Date:2017-6-14 15:06 * Declaration: All Rights Reserved! */public class PrintReversedList { public static void main(String[] args) { test3(); test2(); test1(); } //方法1: 使用栈 private static void printByStack(ListNode pHead){ Stack<Integer> list = new Stack<Integer>(); if (pHead==null) { System.out.println("空链表"); }else{ while (pHead!=null){ list.push((Integer)pHead.getValue()); pHead = pHead.getNext(); } while (!list.isEmpty()){ Integer a = list.pop(); System.out.print(a+" "); } System.out.println(); } } //方法2:使用递归 private static void printByRecursive(ListNode pHead){ if (pHead!=null) { if (pHead.getNext()!=null){ printByRecursive(pHead.getNext()); } System.out.print(pHead.getValue()+" "); //若放在46行,结果会出错 }else{ System.out.println("空链表!"); } } //打印链表 private static void printList(ListNode first) { if (first==null) { System.out.println("空链表!"); }else{ while (first!=null){ System.out.print(first.getValue()+" "); first = first.getNext(); } System.out.println(); } } //===========测试用例=============== private static void test(ListNode first){ System.out.println("初始链表:"); printList(first); System.out.println("使用栈从尾到头打印链表:"); printByStack(first); System.out.println("递归从尾到头打印链表:"); printByRecursive(first); System.out.println(); } //链表有多个节点 private static void test3() { ListNode first = new ListNode(1); ListNode second = new ListNode(2); ListNode third = new ListNode(3); ListNode fourth = new ListNode(4); first.setNext(second); second.setNext(third); third.setNext(fourth); test(first); System.out.println("============================="); } //链表只有一个节点 private static void test2() { ListNode first = new ListNode(1); test(first); System.out.println("============================="); } //链表为空 private static void test1() { test(null); }}
有不妥当之处,麻烦告知:D
阅读全文
0 0
- 面试题5:从尾到头打印链表
- 面试题5 从尾到头打印链表
- 面试题5 从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5-从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5-从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 【面试题5】从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5:从尾到头打印链表
- 面试题5: 从尾到头打印链表
- Recyclerview+checkbox
- stm32 pwm输出异常及解决过程
- Linux--apache日志分割脚本
- C/C++——++i、i+=1、i++之间的区别(附在学习boost时遇到的例子)
- redis jar包下载地址
- 面试题5: 从尾到头打印链表
- 4.2.4--广搜--A strange lift
- 隐藏的BUG探讨——从“Y2K”问题到“2038”年问题
- 最小差
- Spark 提升spark1.6提交任务速度+配置spark2.x后hiveserver2运行失败
- UML图绘制,理论学习
- 4.2.3--广搜--Rescue
- 给初级java程序员推荐几个学习网站--雷锋
- 删除文件时提示“您需要计算机管理员提供的权限才能完成此操作”