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)+" ");

}

}

}

运行结果如下:

57c72117a1a4089e6ad482215f6b45e1.png

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

希望与广大网友互动??

点此进行留言吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面向对象(6)--this关键字使用

this可理解为:当前对象或当前正在创建的对象 ①在类的方法中&#xff0c; 我们可以使用"this.属性"或"this.方法"的方式&#xff0c;调用当前对象属性或方法。通常情况下&#xff0c;我们都选择省略"this."。特殊情况下&#xff0c;如果方法的形…

spring 4.3.x_如何在Spring 3.x中使用事件

spring 4.3.x创建松耦合应用程序的概念和技术很多&#xff0c;Event是其中之一。 事件可以消除代码中的许多依赖关系。 有时没有事件&#xff0c;很难实施SRP *。 Java中的Observable接口可以帮助我们实现事件&#xff08;通过Observer Pattern&#xff09;。 但是&#xff0c…

java接口安全怎么处理_Restful API 接口安全性设计

1.API接口设计规范2.安全性设计a.白名单限制仅接受特定系统的请求响应&#xff0c;调用方的IP地址需要在本系统中报备&#xff0c;否则无法调用b.合法身份合法性验证Basic Authentication :这种方式是直接将用户名和密码放到Header中&#xff0c;使用 Authorization: Basic Zm9…

使用Spring开发Java RESTful Web服务的7个理由

REST现在已成为开发Web服务的标准方法&#xff0c;涉及Java时&#xff0c;可以使用许多框架和库&#xff0c;例如JAX-RS&#xff0c;Restlet&#xff0c;Jersey&#xff0c;RESTEasy&#xff0c;Apache CFX等&#xff0c;但是我鼓励Java开发人员使用Spring框架来开发Java。开发…

Java面向对象(7)--package和import关键字

package关键字 ①为了更好的实现项目中类的管理&#xff0c;提供包的概念 ②使用package声明类或接口所属的包&#xff0c;声明在源文件的首行 ③包&#xff0c;属于标识符&#xff0c;遵循标识符的命名规则、规范( xxxyyyzzz) ④每"."一次&#xff0c;就代表一层文…

java圆形排列_位图排序java版

1、《编程珠玑》第一章第一题就相当的精彩&#xff0c;做个笔记。题目如下&#xff1a;输入: 一个包含n个正整数的文件&#xff0c;每个正整数小于n,n等于10的7次方(一千万)。并且文件内的正整数没有重复和关联数据。输出: 输入整数的升序排列约束&#xff1a; 限制在1M左右…

(3.1)HarmonyOS鸿蒙单击事件4种写法

第二种和第四种常用 实现步骤: 1.通过id找到组件。 2.给需要的组件设置单击事件。 3.实现ClickedListener接口。 4.重写onClicked方法。 第一种&#xff0c;自定义实现类&#xff08;在当前类外面写实现类&#xff09; ①MainAbilitySlice.java文件 package com.example.yem…

JSON指针:JSON-P 1.1概述系列

Java EE 8包括对JSON处理API的更新&#xff0c;并使其与JSON的最新IEFT标准保持同步。 他们是&#xff1a; JSON指针 &#xff08;RFC 6901&#xff09; JSON修补程序&#xff08;RFC 6902&#xff09; JSON合并补丁&#xff08;RFC 7396&#xff09; 我将在这个迷你系列中…

Java获取oracle字段注释_java读取ORACLE数据库表字段信息以及注释信息

最近在做编程工具&#xff0c;便于快速开发程序&#xff0c;用过太多框架&#xff0c;但是发觉只有自己制作代码工具才开发起来痛快。这个类是用来读取oracle数据库表结构的&#xff0c;也包括列的注释&#xff0c;对于生成代码有很好的帮助。1.[文件] OracleTable.java ~ 3KB …

(3.2)HarmonyOS鸿蒙双击事件

跟单击事件类似&#xff0c;双击事件也有4种写法&#xff0c;这里采用当前类作为实现类这种写法&#xff0c;其他写法可以参见《单击事件的4种写法》。不同的是双击事件需要的是Component.DoubleClickedListener。 实现步骤: 1.通过id找到组件。 2.给需要的组件设置双击事件。…

java文件和xml文件_用Java分割大型XML文件

java文件和xml文件上周&#xff0c;我被要求用Java编写一些东西&#xff0c;该东西能够将一个30GB的XML文件拆分为可配置文件大小的较小部分。 文件的使用者将是一个中间件应用程序&#xff0c;该应用程序在XML的大尺寸方面存在问题。 在幕后&#xff0c;它使用某种DOM解析技术…

oracle java 并发_【转】JAVA并发教程(ORACLE官网资料)

本文是Oracle官方的Java并发相关的教程&#xff0c;感谢并发编程网的翻译和投递。计算机的使用者一直以为他们的计算机可以同时做很多事情。他们认为当其他的应用程序在下载文件&#xff0c;管理打印队列或者缓冲音频的时候他们可以继续在文字处理程序上工作。甚至对于单个应用…

(3.3)HarmonyOS鸿蒙长按事件

跟单击事件类似&#xff0c;长按事件也有4种写法&#xff0c;这里采用当前类作为实现类这种写法&#xff0c;其他写法可以参见《单击事件的4种写法》。 实现步骤: 1.通过id找到组件。 2.给需要的组件设置长按事件。 3.本类实现LongClickedListener接口。 4.重写onLongClicked方…

部署Spring Boot Angular App(Maven和Tomcat)的4种方法

在上一篇有关Spring Boot angular 5的文章中 &#xff0c;我们使用Spring Boot angular 5实现了一个完整的堆栈端到端Web应用程序。在本文中&#xff0c;我们将讨论在tomcat上部署Spring Boot和Angle App的不同方法。 我们将创建一个具有后端&#xff08;服务器&#xff09;和前…

java中true转换为int_在Java中将字节转换为int的最优雅的方式

示例代码&#xff1a;int a 255;byte b (byte) a;int c b & 0xff; // Here be dragonsSystem.out.println(a);System.out.println(b);System.out.println(c);所以我们从一个整数值255开始&#xff0c;将它转换成一个字节(变为-1)&#xff0c;然后使用魔术公式将其转换成…

(3.4)HarmonyOS鸿蒙滑动事件三个动作

接口名&#xff1a;TouchEventListener 滑动事件里面分为三个动作&#xff1a;按下&#xff0c;移动&#xff0c;抬起 PRIMARY_POINT_DOWN&#xff1a;按下 POINT_MOVE&#xff1a;移动 PRIMARY_POINT_UP&#xff1a;抬起 手机坐标&#xff1a; 手机左上角的点为原点。向右为…

计算机二级web题目(8.3)--简单应用题2

前些天发现了一个巨牛的人工智能学习电子书&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;无广告&#xff0c;忍不住分享一下给大家。&#xff08;点击跳转人工智能学习资料&#xff09; 1.在考生文件夹下的Web3目录中&#xff0c;存有3.htm文件&#xff0c;该文件不完…

计算机二级web题目(8.4)--综合应用题2

前些天发现了一个巨牛的人工智能学习电子书&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;无广告&#xff0c;忍不住分享一下给大家。&#xff08;点击跳转人工智能学习资料&#xff09; 1.在考生文件夹下的Web5目录中&#xff0c;存有5.htm文件&#xff0c;该文件不完…

创建存储,修改存储_安全地创建和存储密码

创建存储,修改存储几乎每次涉及用户配置文件时&#xff0c;都必须管理用户凭据&#xff0c;从而能够创建和存储用户密码。 通常应该使用哈希密码和盐分密码来准备数据库公开和通过使用Rainbow表进行哈希逆转。 但是&#xff0c;找到以明文形式存储的密码并不少见&#xff08;很…

mysql把一行保存到另一个表_MYSQL:如何复制整个行从一个表到另一个在MySQL与第二个表有一个额外的列?...

为了完善Zed的答案&#xff0c;并回答你的评论&#xff1a;INSERT INTO dues_storage SELECT d.*, CURRENT_DATE() FROM dues d WHERE id 5;见TJ Crowder的评论最安全的方法是完全指定插入和提取的列。 (对于应用程序)没有任何保证&#xff0c;这些将是您认为可能的顺序。inse…