面试题5: 从尾到头打印链表
2017-06-18 15:23
281 查看
一. 题目
输入一个链表的头结点,从尾到头反过来打印出每个节点的值.
代码请到我的代码库中下载 Point2Offer
二. 代码
有不妥当之处,麻烦告知:D
输入一个链表的头结点,从尾到头反过来打印出每个节点的值.
代码请到我的代码库中下载 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
相关文章推荐
- 剑指offer 面试题5 从尾到头打印链表(递归实现)
- 剑指offer面试题5——链表之从尾到头打印链表
- 《剑指Offer》面试题5:从尾到头打印链表
- 【剑指Offer学习】【面试题5 : 从尾到头打印链表】
- 剑指offer面试题5-从尾到头打印链表/6-重建二叉树
- 面试题---从尾到头打印链表
- 面试题5:从尾到头打印链表
- 前端常见算法面试题之 - 从尾到头打印链表[JavaScript解法]
- 面试题五:从尾到头打印链表|剑指offer
- 面试题5-从尾到头打印链表
- <剑指offer 面试题6-2>从尾到头打印链表 Java
- 【面试题五】从尾到头打印链表
- P51、面试题5:从尾到头打印链表
- 【C语言】单链表的相关热点面试题(包括:从尾到头打印,逆置,冒泡,寻找中间节点,倒数k节点)
- 剑指Offer 面试题5 从尾到头打印链表
- 剑指offer|面试题5:从尾到头打印链表(Java代码)
- 剑指Offer:面试题5——从尾到头打印链表(java实现)
- 剑指offer面试题5:从尾到头打印链表
- 面试题4:从尾到头打印链表
- 剑指offer--面试题5:从尾到头打印链表