剑指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): 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结 ...
随机推荐
- maven学习日记(三)-------开发环境搭建(springmvc+hibernate4)各种maven错误汇总
1.maven编码 gbk 的不可映射字符 解决这个问题的思路: 在maven的编译插件中声明正确的字符集编码编码——编译使用的字符集编码与代码文件使用的字符集编码一致!! 安装系统之后,一般中文系统 ...
- ajax实现模糊查询完成列表信息显示
之前遗留一个老问题:列表模糊查询,用的直接是form提交,点击搜索按扭后,页面刷新,搜索框中关键词就没了,这鸡肋的体验,我发誓一定要搞定它 但是鉴于自己写代码是纯粹玩票,我写代码没有目标,只有在当前工 ...
- LCL Socket基类
SocketBase类库主要是方便创建Socket客户端和Socket服务端的基础实现. 抽象基类:主要实现创建Socket public abstract class NetworkBase{} 通 ...
- vegan 包进行 Bioenv 分析
Bioenv 分析通过 计算样本群落结构的距离矩阵和 环境因子的距离矩阵,计算两个距离之间的相关系数,挑选出最佳的环境因子组合: 默认情况下,计算 群落结构的距离矩阵时, 使用 Bray-Curtis ...
- js 形如 "1,2,3"的操作
查找指定元素在数组中的index. var arr=[1,2,3]; $.inArray(2, arr);//返回1 arr.splice($.inArray(2, arr),1); //从数组中删除 ...
- 面试的角度诠释Java工程师(二)
续言: 相信每一位简书的作者,都会有我这样的思考:怎么写好一篇文章?或者怎么写好一篇技术类的文章?我就先说说我的感悟吧,写文章其实和写程序是一样的.为什么我会说它们是一样的?简单思考一下...... ...
- ubuntu安装mongo数据库
安装mongo数据库,在shell下输入 sudo apt-get install mongodb 如果需要在Python中使用mongo数据库,还需要额外安装Python封装库 pip instal ...
- js中的坑
for in vs hasOwnProperty == === 对象比较用===,值比较用==. 严格运算用=== http://www.zhihu.com/question/31442029 著作权 ...
- wine for MacOS
Installing Wine on Mac This tutorial is for intermediate users who want to install and use Wine on t ...
- Windows 7 完美安装 Visual C++ 6.0
http://wenku.baidu.com/link?url=UiwoH2l4H_IWK6y8JkVNg4slp8gkM_9qudihP0XD4MdMCwm-j1-vINWEjQE1aBCeP121 ...