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

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

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值