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. Migrating Brokers in a Cluster

    Brokers can be moved to a new host in a Kafka cluster. This might be needed in the case of catastrop ...

  2. Mysql语句删除主键的自增

    ALTER TABLE 表名MODIFY COLUMN 字段名 int(2) NOT NULL FIRST ;

  3. 【spring源码分析】IOC容器初始化(一)

    前言:spring主要就是对bean进行管理,因此IOC容器的初始化过程非常重要,搞清楚其原理不管在实际生产或面试过程中都十分的有用.在[spring源码分析]准备工作中已经搭建好spring的环境, ...

  4. [LeetCode] 19. 删除链表的倒数第N个节点

    题目链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 题目描述: 给定一个链表,删除链表的倒数第 n 个节点, ...

  5. 【憩园】C#并发编程之异步编程(一)

    写在前面 C#5.0中,对异步编程进行了一次革命性的重构,引入了async和await这两个关键字,使得开发人员在不需要深刻了解异步编程的底层原理,就可以写出十分优美而又代码量极少的代码.如果使用得当 ...

  6. 安装sql server2017出现错误:Visual Studio 运行时"Microsoft visual c++2017 X64 Minimum Runtime - 14.10.25008"需要修复

    安装sql server 2017 Developer Edition时,安装选择“基本”,发生如下错误: 解决方法: 1.进入控制面板→程序中,找到“Microsoft visual c++2017 ...

  7. 将WTL应用向导添加到VS2019

    WTL 简介 WTL 全称是 Windows Template Library,像 MFC 一样使用 C++ 的面向对象技术对 Win32 接口进行了封装,使之便于开发 Windows 程序.相对于 ...

  8. C#之事件与eventArgs

    static void Main(string[] args)         {             MyText myText = new MyText();             myTe ...

  9. HashMap源码分析(基于jdk8)

    我们知道在jdk7中HashMap的实现方式是数组+链表.而在jdk8中,实现有所变化,使用的是数组+链表+红黑树实现的. 当链表长度达到8时转化为红黑树. static final int TREE ...

  10. Python中的 sort 和 sorted

    今天在做一道题时,因为忘了Python中sort和sorted的用法与区别导致程序一直报错,找了好久才知道是使用方法错误的问题!现在就大致的归纳一下sort和sorted的用法与区别 1. sort: ...