public class ListNode {
public int value;
public ListNode next; public ListNode(int value) {
this.value = value;
} }
public class Mylist {
/**
* 头结点插入
*/
public static void headInsert(ListNode head, ListNode newHead) {
ListNode old = head;
head = newHead;
head.next = old;
} /**
* 尾节点插入
*/
public static void tailInsert(ListNode tail, ListNode newTail) {
ListNode old = tail;
tail = newTail;
old.next = tail;
newTail.next = null;
} /**
* 遍历
*/
public static void traverse(ListNode head) {
while(head != null) {
System.out.print(head.value+" ");
head = head.next;
}
System.out.println();
} /**
* 查找
*/
public static int find(ListNode head, int value) {
int index = -1;
int count = 0;
while(head != null) {
if(head.value == value) {
index = count;
return count;
}
count++;
head = head.next;
}
return index;
} /**
* 中间插入
* @param oldNode
* @param newNode
*/
public static void insert(ListNode p, ListNode s) {
ListNode next = p.next;
p.next = s;
s.next = next;
} /**
* 删除节点
*/
public static void delete(ListNode head, ListNode q) {
if(q != null) {
if(q.next != null) {
ListNode p = q.next;
q.value = p.value;
q.next = p.next;
p = null;
}else {//删除最后一个元素的情况
while(head != null) {
if(head.next != null && head.next == q) {
head.next = null;
break;
}
head = head.next;
}
}
}
} public static void main(String[] args) {
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3); node1.next = node2;
node2.next = node3;
node3.next = null;
traverse(node1);
//头结点插入
ListNode newHead = new ListNode(0);
headInsert(node1, newHead);
traverse(newHead);
//尾节点插入
ListNode newTail = new ListNode(4);
tailInsert(node3, newTail);
traverse(newHead);
//中间节点插入
ListNode node = new ListNode(5);
insert(node2, node);
traverse(newHead);
//删除非尾节点
delete(node1, node);
traverse(newHead);
//删除尾节点
delete(newHead, newTail);
traverse(newHead);
}
}

java实现单链接的几种常用操作的更多相关文章

  1. 关于Java集合类库中的几种常用队列

    Java中几种常用的队列 阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞.试图从空的阻塞队列中获取元素的线程将会被阻塞 ...

  2. Java实现单例的5种方式

    1. 什么是单例模式 单例模式指的是在应用整个生命周期内只能存在一个实例.单例模式是一种被广泛使用的设计模式.他有很多好处,能够避免实例对象的重复创建,减少创建实例的系统开销,节省内存. 2. 单例模 ...

  3. java之io之file类的常用操作

    java io 中,file类是必须掌握的.它的常用api用法见实例. package com.westward.io; import java.io.File; import java.io.IOE ...

  4. 【java】String类和StringBuffer类常用操作

    String类是字符串常量,是不可更改的常量.而StringBuffer是字符串变量,它的对象是可以扩充和修改的.StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于Stri ...

  5. java 对小数位的处理 BigDecimal DecimalFormat 常用操作 浅解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] htt ...

  6. java正则表达式四种常用的处理方式是怎么样呢《匹配、分割、代替、获取》

    java 正则表达式高级篇,介绍四种常用的处理方式:匹配.分割.替代.获取,具体内容如下package test; import java.util.regex.Matcher; import jav ...

  7. 利用Java反射机制对实体类的常用操作工具类ObjectUtil

    代码: ObjectUtil类: import java.lang.reflect.Field; import java.math.BigDecimal; import java.text.Simpl ...

  8. 二进制与十进制的转化,bool str int 之间的转化,str的常用操作,

    1.基础数据类型总览(7种) int: 整型,用于进行+-*/运算 str: 存储少量的数据;可加str,可乘数字,可切片,可进行9种常用操作 bool: True False 判断真假 list: ...

  9. java 中几种常用数据结构

    Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类. 一.几个常用类的区别 1.A ...

随机推荐

  1. 《Python 数据科学实践指南》读书笔记

    文章提纲 全书总评 C01.Python 介绍 Python 版本 Python 解释器 Python 之禅 C02.Python 基础知识 基础知识 流程控制: 函数及异常 函数: 异常 字符串 获 ...

  2. SQLAchemy模块

    老师的博客:http://www.cnblogs.com/wupeiqi/articles/5713330.html 有一篇习详细的博客: http://www.keakon.net/2012/12/ ...

  3. [kuangbin带你飞]专题二十二 区间DP-E-POJ - 1651

    区间DP模板题 做区间DP的题目的时候,我们考虑DP[i][j]的含义是什么? 由题意大概是这样的,我们可以从n个数中每次选一个我们以前没选过的数字拿走,需要消耗a[i]*a[i+1]*a[i-1]的 ...

  4. Go之运算符

    逻辑运算符用于连接布尔型表达式.在Java中不同于数学的逻辑表达 3<X<5 ,java 中应该写成 x>3 & x<5 "&" 和&quo ...

  5. ubuntu linux 安装分区

    挂载点/:主分区:安装系统和软件:大小为150G:分区格式为ext4: 挂载点/home:逻辑分区:相当于"我的文档":150G大小为硬盘剩下的; 分区格式ext4: swap:逻 ...

  6. IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository

    转自:IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository 今天将IntellIJ IDEA 关于Maven的配置总结一下,方便以后可参考. IDEA版本: Intel ...

  7. Transformer

    参考资料: [ERT大火却不懂Transformer?读这一篇就够了] https://zhuanlan.zhihu.com/p/54356280 (中文版) http://jalammar.gith ...

  8. 使用elementUI滚动条之横向滚动

    用过elementUI组件应该会知道它内置一个滚动效果,官网对此组件没有相关文档,也是细心网友发现的. <el-scrollbar></el-scrollbar> 将会出现滚动 ...

  9. bat脚本基本命令和格式

    bat脚本 --莫非 BAT脚本与shell脚本区别 Shell脚本使用Linux/Unix下的命令,一般文件开头以#号来告诉系统这个脚本需要什么解释器来执行(如:#!/bin/bash采用bash而 ...

  10. JSON序列化不想新建很多对象实体怎么办

    不用新建对象,而是用JSONObject 相当于Map类型,重复的key 会覆盖 //序列化JSONObject jsonObject = new JSONObject();jsonObject.pu ...