Java创建单链表(头插法、尾插法),并逆序打印单链表:

  1. package day_0324;
  2. import java.util.Scanner;
  3. import java.util.Stack;
  4. class ListNode
  5. {
  6. int val;
  7. ListNode next;
  8. public ListNode(int val)
  9. {
  10. this.val=val;
  11. }
  12. }
  13. public class ListNodeTest
  14. {
  15. public static void main(String[] args)
  16. {
  17. //railInsertCreatList(scanner);
  18. headInsertCreateList();
  19. }
  20. /**
  21. * 头插法建立单链表
  22. * @param scanner
  23. */
  24. private static void headInsertCreateList()
  25. {
  26. Scanner scanner=new Scanner(System.in);
  27. while(scanner.hasNext())
  28. {
  29. ListNode head=new ListNode(-1);
  30. head.next=null;//head为头结点,无意义
  31. String str=scanner.nextLine();
  32. String[] temp=str.split(" ");
  33. for(int i=0;i<temp.length;i++)
  34. {
  35. ListNode node=new ListNode(Integer.valueOf(temp[i]));
  36. node.next=head.next;
  37. head.next=node;
  38. }
  39. ListNode p=head.next;
  40. while(p!=null)
  41. {
  42. System.out.println(p.val);
  43. p=p.next;
  44. }
  45. }
  46. scanner.close();
  47. }
  48.  
  49. /**
  50. * 尾插法建立单链表
  51. * @param scanner
  52. */
  53. @SuppressWarnings("unused")
  54. private static void railInsertCreatList()
  55. {
  56. Scanner scanner=new Scanner(System.in);
  57. while(scanner.hasNext())
  58. {
  59. ListNode head=new ListNode(-1);
  60. head.next=null;
  61. ListNode r=head;
  62. String str=scanner.nextLine();
  63. String[] temp=str.split(" ");
  64. for(int i=0;i<temp.length;i++)
  65. {
  66. ListNode node=new ListNode(Integer.valueOf(temp[i]));
  67. r.next=node;
  68. r=node;
  69. }
  70. r.next=null;
  71. ListNode p=head.next;
  72. while(p!=null)
  73. {
  74. System.out.println(p.val);
  75. p=p.next;
  76. }
  77. }
  78. scanner.close();
  79. }
  80. /**
  81. * 递归方法逆序打印单链表
  82. * @param head
  83. */
  84. public static void printListReverse1(ListNode head)
  85. {
  86. if(head!=null)
  87. {
  88. if(head.next!=null)
  89. {
  90. printListReverse1(head.next);
  91. }
  92. }
  93. System.out.println(head.val);
  94. }
  95. /**
  96. * 使用栈逆序打印单链表
  97. * @param head
  98. */
  99. public static void printListReverse2(ListNode head)
  100. {
  101. Stack<Integer> stack=new Stack<Integer>();
  102. while(head!=null)
  103. {
  104. stack.push(head.val);
  105. head=head.next;
  106. }
  107. while(!stack.isEmpty())
  108. {
  109. System.out.println(stack.pop());
  110. }
  111. }
  112. }

剑指offer面试题5:逆序打印单链表(Java)的更多相关文章

  1. 剑指Offer:面试题26——复制复杂的链表(java实现)

    问题描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点). 思路1: 1.先复制链表节点,并用next链接起来. 2.然后对每一个结点去修改 ...

  2. C++版 - 剑指offer之面试题37:两个链表的第一个公共结点[LeetCode 160] 解题报告

    剑指offer之面试题37 两个链表的第一个公共结点 提交网址: http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?t ...

  3. 剑指offer——面试题18.1:删除链表中重复的节点

    // 面试题18(二):删除链表中重复的结点 // 题目:在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重复 // 结点被删除之后,链表如图3.4(b)所示. #include &l ...

  4. 剑指Offer面试题:31.两个链表的第一个公共节点

    一.题目:两个链表的第一个公共节点 题目:输入两个链表,找出它们的第一个公共结点. 链表结点定义如下,这里使用C#语言描述: public class Node { public int key; p ...

  5. 剑指Offer:面试题30——最小的k个数(java实现)

    问题描述: 输入n个整数,找出其中最小的k个数 思路1: 先排序,再取前k个 时间复杂度O(nlogn) 下面给出快排序的代码(基于下面Partition函数的方法) public void Quic ...

  6. 剑指Offer:面试题11——数值的整数次方(java实现)

    题目描述: 实现函数double Power(double base, int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题 思路:本题的重点考察内容是 ...

  7. 【剑指offer】从尾到头翻转打印单链表

    #include <iostream> #include <vector> #include <stack> using namespace std; struct ...

  8. C++版 - 剑指offer 面试题24:二叉搜索树BST的后序遍历序列(的判断) 题解

    剑指offer 面试题24:二叉搜索树的后序遍历序列(的判断) 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true.否则返回false.假设输入的数组的任意两个 ...

  9. 剑指offer面试题:输入某二叉树的前序遍历和中序遍历,输出后序遍历

    二叉树的先序,中序,后序如何遍历,不在此多说了.直接看题目描述吧(题目摘自九度oj剑指offer面试题6): 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结 ...

随机推荐

  1. JS 同一标签随机不停切换数据点菜--解决选择困难症

    可视化的 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...

  2. e824. 获得和设置JSplitPane中的子组件

    // Create a left-right split pane JSplitPane hpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, lef ...

  3. python3 pyodbc简单使用

    转自:https://my.oschina.net/zhengyijie/blog/35587 1.连接数据库 首先要import pyodbc 1)直接连接数据库和创建一个游标(cursor) cn ...

  4. SqlServer 数据库引擎优化顾问优化数据库

    现在一直在做的项目,数据量相对也不小,开始的时候没有觉得,因为是刚开始,数据量还很小,在程序使用过程中速度还挺快,但是随着数据量的不停的增长,发现程序越来越慢,甚至出现了超时的问题,因此要对程序和数据 ...

  5. List&Map&Set的操作和遍历

    Java的三大集合即:Set.List.Map. Set:代表无序.不可重复的集合,常用的有HashSet(哈希表实现).TreeSet(红黑树实现): List:代表有序.可以重复的集合,比较常用的 ...

  6. linux中chown命令

    chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...

  7. False 'Sharing Violation' Xcopy error message

    今天想要将QC的新工具自动拷贝到p4 用户机器上使用,为了避免每次通知大家升级啊!!! 于是,我在程序里调用了bat文件,执行拷贝操作,想在默默的情况下替换更新新版本工具,结果我测试发现没能成功更新版 ...

  8. make screenshot at Eclipse

    In Eclipse, from the Window menu, select Open Perspective > Other... > DDMS. Select the Kindle ...

  9. pdf转换成word转换器免费版

    在平时的办公中,我们只需要有一款比较好用的pdf转换成word转换器,就能提高我们的工作效率,但是国内外的pdf转换成word转换器应该怎么选呢?小编因为是文职工作者,所以在日常的实践中选出了ABBY ...

  10. 【转】Redis集群搭建与简单使用

    介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. 两台虚拟机都是 CentOS ,一台 ...