java单链表 提供增删改查_java实现单链表增删改查的实例代码详解
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实现单链表增删改查的实例代码详解相关推荐
- java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解
废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...
- java多线程代码_java多线程实例代码详解
原文:http://blog.csdn.net/paranoidyang/article/details/70184523 作者:Paranoidyang 线程与进程的区别 (1)程序是一段静态的代码 ...
- java10以内的加减法_Java实现随机10道10以内加减法的代码详解
Java实现随机出题,10道10以内加减法计算代码实例 本文实例为大家分享了Java实现随机出题,10道10以内加减法计算l的具体代码,供大家参考,具体内容如下 package com.swift; ...
- java云片模板参数_Java使用云片API发送短信验证码的代码详解
这篇文章主要介绍了Java使用云片API发送短信验证码,主要用的是Java实现短信验证码.需要的朋友可以参考下 下面开始介绍的是如何利用机器完成批量操作,将短信业务自动化. 获取APIKEY 云片网提 ...
- 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 ...
- java语言链栈_Java语言实现数据结构栈代码详解
近来复习数据结构,自己动手实现了栈.栈是一种限制插入和删除只能在一个位置上的表.最基本的操作是进栈和出栈,因此,又被叫作"先进后出"表. 首先了解下栈的概念: 栈是限定仅在表头进行 ...
- java一个方法排他调用_Java编程实现排他锁代码详解
一 .前言 某年某月某天,同事说需要一个文件排他锁功能,需求如下: (1)写操作是排他属性 (2)适用于同一进程的多线程/也适用于多进程的排他操作 (3)容错性:获得锁的进程若Crash,不影响到后续 ...
- java 读者写者_Java实现生产者消费者问题与读者写者问题详解
1.生产者消费者问题 生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品.解决生产者/消费者问题的方法可分为两 ...
- java编程数据溢出问题_Java数据溢出代码详解
Java数据溢出代码详解 发布时间:2020-10-05 15:08:31 来源:脚本之家 阅读:103 作者:Pony小马 java是一门相对安全的语言,那么数据溢出时它是如何处理的呢? 看一段代码 ...
最新文章
- 1、oracle后台进程(数据字典V$BGPROCESS)
- 得到相对Plugin的路径
- AMD Athlon ⅡX2 240 K10 平台 超频 全记录
- 手把手教你在 Ubuntu16.04 安装 GPU 驱动 + CUDA9.0 + cuDNN7
- 球球大作战测试服android版,球球大作战10.0体验服
- 如何判断笔记本蓝牙硬件坏了_还在担心被套路?老司机教你如何判断车用尿素溶液的好与坏...
- 计算机集成项目经理 培训,计算机信息系统集成项目经理培训总结.doc
- git21天打卡day3-创建仓库
- OpenStack Queens版本Security项目介绍
- iperf基本使用方式
- 金错刀讲小米产品实战
- 与众不同的协同办公工具——飞书
- STM32F7--->FMC(可变存储控制器) Flexible Memory Controller
- 从又苦又累的销售工作到python程序员,我哭了
- 手机换IP的方法--手机PPTP
- 【c++数据结构】栈混洗的甄别算法
- 展锐平台 Android 10.0 OTA升级开机Logo
- powershell解压缩文件
- arm linux 移植过程——uboot makefile注释
- “你的下一个显示器,可能是个充电宝!”
热门文章
- Java 7:如何编写非常快速的Java代码
- 微信小程序注册/登录接口开发
- Spring半注解半Xml
- python斐波那契数列前20项_兔子繁殖问题带来的智商碾压:斐波那契数列趣谈
- 完全复制一个dict_Redis主从复制getshell技巧
- C语言打印输出红色字体
- linux 脚本 提示编辑器,javascript – 带脚本的文本编辑器…适用于Linux
- 手机怎么进ph_明日发布,华为鸿蒙OS2.0手机版特色功能曝光
- php实现中间件6,说一说ThinkPHP6中五花八门的中间件_PHP开发框架教程
- mysql parameter_C#MySqlParameter问题