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

package day_0324;
import java.util.Scanner;
import java.util.Stack;
class ListNode
{
int val;
ListNode next;
public ListNode(int val)
{
this.val=val;
}
}
public class ListNodeTest
{
public static void main(String[] args)
{
//railInsertCreatList(scanner);
headInsertCreateList();
}
/**
* 头插法建立单链表
* @param scanner
*/
private static void headInsertCreateList()
{
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext())
{
ListNode head=new ListNode(-1);
head.next=null;//head为头结点,无意义
String str=scanner.nextLine();
String[] temp=str.split(" ");
for(int i=0;i<temp.length;i++)
{
ListNode node=new ListNode(Integer.valueOf(temp[i]));
node.next=head.next;
head.next=node;
}
ListNode p=head.next;
while(p!=null)
{
System.out.println(p.val);
p=p.next;
}
}
scanner.close();
} /**
* 尾插法建立单链表
* @param scanner
*/
@SuppressWarnings("unused")
private static void railInsertCreatList()
{
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext())
{
ListNode head=new ListNode(-1);
head.next=null;
ListNode r=head;
String str=scanner.nextLine();
String[] temp=str.split(" ");
for(int i=0;i<temp.length;i++)
{
ListNode node=new ListNode(Integer.valueOf(temp[i]));
r.next=node;
r=node;
}
r.next=null;
ListNode p=head.next;
while(p!=null)
{
System.out.println(p.val);
p=p.next;
}
}
scanner.close();
}
/**
* 递归方法逆序打印单链表
* @param head
*/
public static void printListReverse1(ListNode head)
{
if(head!=null)
{
if(head.next!=null)
{
printListReverse1(head.next);
}
}
System.out.println(head.val);
}
/**
* 使用栈逆序打印单链表
* @param head
*/
public static void printListReverse2(ListNode head)
{
Stack<Integer> stack=new Stack<Integer>();
while(head!=null)
{
stack.push(head.val);
head=head.next;
}
while(!stack.isEmpty())
{
System.out.println(stack.pop());
}
}
}

剑指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. 传统餐饮O2O支付体系成难题

    传统餐饮O2O支付体系成难题 网的数据化参考,使得门店运营更具科学性. 作为“易淘食”这样的订餐网站,主要依靠与餐厅分成 来获得利润.“根据每个餐厅合作情况不同,每一笔订单我们可获得5%-15%的佣金 ...

  2. 第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门搜索

    第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门 我的搜素简单实现原理我们可以用js来实现,首先用js获取到 ...

  3. Spring JDBC处理CLOB类型字段

    以下示例将演示使用spring jdbc更新CLOB类型的字段值,即更新student表中的可用记录. student表的结构如下 - CREATE TABLE student( ID INT NOT ...

  4. asp InStr

    <script type="text/vbscript"> txt="This is a beautiful day!"document.write ...

  5. perl学习-运算符添加引号

    这个比较有意思,在其它语言中好像没有特别提到 Perl 引号运算符如下表所示. 运算符描述实例 q{ }为字符串添加单引号q{abcd} 结果为 'abcd' qq{ }为字符串添加双引号qq{abc ...

  6. Python资料收藏(杂乱版)

    http://blog.csdn.net/vagrxie/article/category/343814 http://blog.sina.com.cn/s/articlelist_280149524 ...

  7. C#实现windows服务安装,服务名可配置时出问题(无法创建 ProjectInstaller 安装程序类型的实例)

    [参考资料]Windows 安装服务 的两种方式 一.问题出在System.Configuration.ConfigurationManager.AppSettings[""].T ...

  8. EJB部署规则报错

    javax.naming.NameNotFoundException: Unable to resolve 'RuleDeployer'. Resolved ''; remaining name 'R ...

  9. RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”

    转自http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/08/2203153.html 备忘 rpm 执行安装包 二进制包(Binary ...

  10. 3. beeGo 自己写Controller 和 请求数据处理

    Controller Controller等同于Django里的view,处理逻辑都是在Controller里面完成的,下面就写一个最简单的Controller. 我们在写自己的controller的 ...