剑指offer面试题5:逆序打印单链表(Java)
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)的更多相关文章
- 剑指Offer:面试题26——复制复杂的链表(java实现)
问题描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点). 思路1: 1.先复制链表节点,并用next链接起来. 2.然后对每一个结点去修改 ...
- C++版 - 剑指offer之面试题37:两个链表的第一个公共结点[LeetCode 160] 解题报告
剑指offer之面试题37 两个链表的第一个公共结点 提交网址: http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?t ...
- 剑指offer——面试题18.1:删除链表中重复的节点
// 面试题18(二):删除链表中重复的结点 // 题目:在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重复 // 结点被删除之后,链表如图3.4(b)所示. #include &l ...
- 剑指Offer面试题:31.两个链表的第一个公共节点
一.题目:两个链表的第一个公共节点 题目:输入两个链表,找出它们的第一个公共结点. 链表结点定义如下,这里使用C#语言描述: public class Node { public int key; p ...
- 剑指Offer:面试题30——最小的k个数(java实现)
问题描述: 输入n个整数,找出其中最小的k个数 思路1: 先排序,再取前k个 时间复杂度O(nlogn) 下面给出快排序的代码(基于下面Partition函数的方法) public void Quic ...
- 剑指Offer:面试题11——数值的整数次方(java实现)
题目描述: 实现函数double Power(double base, int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题 思路:本题的重点考察内容是 ...
- 【剑指offer】从尾到头翻转打印单链表
#include <iostream> #include <vector> #include <stack> using namespace std; struct ...
- C++版 - 剑指offer 面试题24:二叉搜索树BST的后序遍历序列(的判断) 题解
剑指offer 面试题24:二叉搜索树的后序遍历序列(的判断) 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true.否则返回false.假设输入的数组的任意两个 ...
- 剑指offer面试题:输入某二叉树的前序遍历和中序遍历,输出后序遍历
二叉树的先序,中序,后序如何遍历,不在此多说了.直接看题目描述吧(题目摘自九度oj剑指offer面试题6): 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结 ...
随机推荐
- js 获取单选框和复选框的值和js dom方法给单选框和多选框赋值
获取单选框框值的方法 function getRadioRes(Name){ var rdsObj = document.getElementsByName(Name); var checkVal = ...
- 利用函数或映射进行数据转换 (map)
先来看个数据 df = DataFrame({"food":["bacon", "pulled pork", "bacon&quo ...
- 超实惠:99元阿里云服务器1核2G内存40G硬盘(SSD)
阿里云推出拼团购服务器活动,99元即可购买阿里云1核2G内存40G硬盘(还是SSD哦)云服务器,赶快加入来拼团吧!阿里云1核2G云服务器ECS:1年99元.2年189元.3年279元! 活动地址 一. ...
- js 形如 "1,2,3"的操作
查找指定元素在数组中的index. var arr=[1,2,3]; $.inArray(2, arr);//返回1 arr.splice($.inArray(2, arr),1); //从数组中删除 ...
- 环境变量PATH/cp命令/mv命令/文档查看cat/more/less/head/tail
2.10 环境变量PATH 2.11 cp命令 2.12 mv命令 2.13 文档查看cat/more/less/head/tail which rmdir 可以查到命令的路径 例如: ls 命令是 ...
- ASP.NET C# 登陆窗体 限制用户名只输入字母 数字以及下划线
文本框的输入限制,我们主要集中两个问题: 一.怎样限制用户名输入的长度? 答:设置txtName的属性 MaxLength="; (我们这里以10个字符为例) 二.怎样限制用户名只输入字母 ...
- 【WP8】扩展CM的INavigationService方法
CM支持通过ViewModel进行导航,并通过支持参数传递,但是内部只是通过反射的方式构造Uri的参数进行导航,所以只支持简单类型的参数传递,下面对其进行扩展,在页面导航时支持复杂类型的参数传递,并扩 ...
- nginx配置ThinkPHP配置
配置时注意红色部分 server { listen 8888 default_server; #listen [::]:80 default_server; server_name _; root / ...
- 分析技术在PMP中的应用
Analytical Techniques, 根据可能的项目或者环境变量变化以及它们与其他变量之间的关系,对潜在后果进行评估,分析和预测的各种技术. 4.4.2.2 监控项目工作: 分析技术 包括: ...
- Hessian资料
introduction http://www.cnblogs.com/hzmark/archive/2012/11/27/Hessian.html 超时时间设置 http://www.tuicool ...