剑指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 同一标签随机不停切换数据点菜--解决选择困难症
可视化的 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...
- e824. 获得和设置JSplitPane中的子组件
// Create a left-right split pane JSplitPane hpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, lef ...
- python3 pyodbc简单使用
转自:https://my.oschina.net/zhengyijie/blog/35587 1.连接数据库 首先要import pyodbc 1)直接连接数据库和创建一个游标(cursor) cn ...
- SqlServer 数据库引擎优化顾问优化数据库
现在一直在做的项目,数据量相对也不小,开始的时候没有觉得,因为是刚开始,数据量还很小,在程序使用过程中速度还挺快,但是随着数据量的不停的增长,发现程序越来越慢,甚至出现了超时的问题,因此要对程序和数据 ...
- List&Map&Set的操作和遍历
Java的三大集合即:Set.List.Map. Set:代表无序.不可重复的集合,常用的有HashSet(哈希表实现).TreeSet(红黑树实现): List:代表有序.可以重复的集合,比较常用的 ...
- linux中chown命令
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...
- False 'Sharing Violation' Xcopy error message
今天想要将QC的新工具自动拷贝到p4 用户机器上使用,为了避免每次通知大家升级啊!!! 于是,我在程序里调用了bat文件,执行拷贝操作,想在默默的情况下替换更新新版本工具,结果我测试发现没能成功更新版 ...
- make screenshot at Eclipse
In Eclipse, from the Window menu, select Open Perspective > Other... > DDMS. Select the Kindle ...
- pdf转换成word转换器免费版
在平时的办公中,我们只需要有一款比较好用的pdf转换成word转换器,就能提高我们的工作效率,但是国内外的pdf转换成word转换器应该怎么选呢?小编因为是文职工作者,所以在日常的实践中选出了ABBY ...
- 【转】Redis集群搭建与简单使用
介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. 两台虚拟机都是 CentOS ,一台 ...