package 数据结构算法.链表;

/*

*定义节点

* 链表由节点构成

*/

public class node {

private e e; //数据data

private node next; //指向下一个节点

public node() {

}

public node(e e) {

this.e = e;

}

public node getnext() {

return next;

}

public void setnext(node next) {

this.next = next;

}

public e gete() {

return e;

}

public void sete(e e) {

this.e = e;

}

}

package 数据结构算法.链表;

/*

* 定义实现类mylinkedlist

* 实现链表的基本功能:增删改查

*/

public class mylinkedlist {

//声明头节点尾节点

private node head;

private node last;

//链表的大小

private int size;

private int modcount; //计算被修改的次数

public mylinkedlist() {

head = new node();//实例化头结点

last = head;

}

/*

*返回单链表中存储的元素总数

*/

public int size() {

return size;

}

/*

*获取指定索引位置的节点对象

*/

public node get(int index) {

if (index < 0 || index > size - 1)

return null;

node node = head.getnext();//将头结点的下一个节点赋给node

for (int i = 0; i < index; i++) {

node = node.getnext();//获取node的下一个节点

}

return node;

}

/*

*获取指定索引位置的数据

*/

public e getvalue(int index) {

if (index < 0 || index > size - 1)

return null;

node node = get(index);

return node.gete();

}

/*

*增加元素

*/

public void add(e e) {

node node = new node(e); //以e实例化一个节点

last.setnext(node);//往尾节点后追加节点

last = node;//该节点设为最后一个节点

size++;

modcount++;

}

/*

*指定位置插入元素,返回插入的节点数据

*/

public e add(int index, e e) {

if (index < 0 || index > size - 1)

return null;

node node = new node(e); //实例化一个节点

//找到插入的原节点

node oldnode = get(index);

if (index == 0) {//当索引为0时

head.setnext(node);

} else {

//找到插入节点的上一个

node bnode = get(index - 1);

bnode.setnext(node);

}

node.setnext(oldnode);

size++;

modcount++;

return oldnode.gete();

}

/*

*删除指定的节点e,并返回删除节点的数据

*/

public e delete(int index) {

if (index < 0 || index > size - 1)

return null;

if (index == 0) {//当索引为1,令头结点的下一个节点为头结点

node node = head.getnext();

head.setnext(node.getnext());

}

//获取要删除节点的前一个节点

node bnode = get(index - 1);

//获取要删除的节点

node node = bnode.getnext();

//获取要删除节点的下一个节点

node nnode = node.getnext();

//删除该节点

bnode.setnext(nnode);

//清除node的下一个节点

node.setnext(null);

size--;

modcount++;

return node.gete();//返回节点中的数据域

}

/*

*修改指定位置的数据域并返回修改后的数据

*/

public e set(int index, e e) {

if (index < 0 || index > size - 1)

return null;

//获取指定位置的原节点

node node = get(index);

node.sete(e);

modcount++;

return node.gete();

}

}

package 数据结构算法.链表;

/*

*定义测试类

*/

public class mylinkedlisttest {

public static void main(string[] args) {

mylinkedlist list = new mylinkedlist<>();

//测试add

list.add("one");

list.add("two");

list.add("three");

list.add("four");

list.add(0,"newone");

list.add(1,"newtwo");

for (int i = 0; i < list.size(); i++) {

system.out.print(list.getvalue(i)+" ");

}

//测试set

system.out.println();

list.set(0, "111");

list.set(1, "222");

system.out.println(list.getvalue(0) + " " + list.getvalue(1));

//测试delete

system.out.println();

list.delete(1);

for (int i = 0; i < list.size(); i++) {

system.out.print(list.getvalue(i)+" ");

}

}

}

运行结果如下:

以上就是全部知识点内容,感谢大家对萬仟网的支持。

希望与广大网友互动??

点此进行留言吧!

java单链表 提供增删改查_java实现单链表增删改查的实例代码详解相关推荐

  1. java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...

  2. java多线程代码_java多线程实例代码详解

    原文:http://blog.csdn.net/paranoidyang/article/details/70184523 作者:Paranoidyang 线程与进程的区别 (1)程序是一段静态的代码 ...

  3. java10以内的加减法_Java实现随机10道10以内加减法的代码详解

    Java实现随机出题,10道10以内加减法计算代码实例 本文实例为大家分享了Java实现随机出题,10道10以内加减法计算l的具体代码,供大家参考,具体内容如下 package com.swift; ...

  4. java云片模板参数_Java使用云片API发送短信验证码的代码详解

    这篇文章主要介绍了Java使用云片API发送短信验证码,主要用的是Java实现短信验证码.需要的朋友可以参考下 下面开始介绍的是如何利用机器完成批量操作,将短信业务自动化. 获取APIKEY 云片网提 ...

  5. java shiro实例_spring+shiro 整合实例代码详解

    一.添加相关依赖 org.apache.shiro shiro-core 1.2.1 org.apache.shiro shiro-web 1.2.1 org.apache.shiro shiro-e ...

  6. java语言链栈_Java语言实现数据结构栈代码详解

    近来复习数据结构,自己动手实现了栈.栈是一种限制插入和删除只能在一个位置上的表.最基本的操作是进栈和出栈,因此,又被叫作"先进后出"表. 首先了解下栈的概念: 栈是限定仅在表头进行 ...

  7. java一个方法排他调用_Java编程实现排他锁代码详解

    一 .前言 某年某月某天,同事说需要一个文件排他锁功能,需求如下: (1)写操作是排他属性 (2)适用于同一进程的多线程/也适用于多进程的排他操作 (3)容错性:获得锁的进程若Crash,不影响到后续 ...

  8. java 读者写者_Java实现生产者消费者问题与读者写者问题详解

    1.生产者消费者问题 生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品.解决生产者/消费者问题的方法可分为两 ...

  9. java编程数据溢出问题_Java数据溢出代码详解

    Java数据溢出代码详解 发布时间:2020-10-05 15:08:31 来源:脚本之家 阅读:103 作者:Pony小马 java是一门相对安全的语言,那么数据溢出时它是如何处理的呢? 看一段代码 ...

最新文章

  1. 1、oracle后台进程(数据字典V$BGPROCESS)
  2. 得到相对Plugin的路径
  3. AMD Athlon ⅡX2 240 K10 平台 超频 全记录
  4. 手把手教你在 Ubuntu16.04 安装 GPU 驱动 + CUDA9.0 + cuDNN7
  5. 球球大作战测试服android版,球球大作战10.0体验服
  6. 如何判断笔记本蓝牙硬件坏了_还在担心被套路?老司机教你如何判断车用尿素溶液的好与坏...
  7. 计算机集成项目经理 培训,计算机信息系统集成项目经理培训总结.doc
  8. git21天打卡day3-创建仓库
  9. OpenStack Queens版本Security项目介绍
  10. iperf基本使用方式
  11. 金错刀讲小米产品实战
  12. 与众不同的协同办公工具——飞书
  13. STM32F7--->FMC(可变存储控制器) Flexible Memory Controller
  14. 从又苦又累的销售工作到python程序员,我哭了
  15. 手机换IP的方法--手机PPTP
  16. 【c++数据结构】栈混洗的甄别算法
  17. 展锐平台 Android 10.0 OTA升级开机Logo
  18. powershell解压缩文件
  19. arm linux 移植过程——uboot makefile注释
  20. “你的下一个显示器,可能是个充电宝!”

热门文章

  1. Java 7:如何编写非常快速的Java代码
  2. 微信小程序注册/登录接口开发
  3. Spring半注解半Xml
  4. python斐波那契数列前20项_兔子繁殖问题带来的智商碾压:斐波那契数列趣谈
  5. 完全复制一个dict_Redis主从复制getshell技巧
  6. C语言打印输出红色字体
  7. linux 脚本 提示编辑器,javascript – 带脚本的文本编辑器…适用于Linux
  8. 手机怎么进ph_明日发布,华为鸿蒙OS2.0手机版特色功能曝光
  9. php实现中间件6,说一说ThinkPHP6中五花八门的中间件_PHP开发框架教程
  10. mysql parameter_C#MySqlParameter问题