基于链表的增删改查

package com.aimuti.test;

public class Test3{
public static void main(String[] args){
NodeManager nm = new NodeManager();
System.out.println("-------add-------");
nm.add(1);
nm.add(2);
nm.add(3);
nm.add(4);
nm.add(5);
nm.print();
System.out.println("-------del-------");
nm.del(2);
nm.print();
System.out.println("-------find-------");
System.out.println(nm.find(1));
System.out.println("-------update-------");
System.out.println(nm.update(3, 6));
nm.print();
System.out.println("-------insert-------");
nm.insert(1, 3);
nm.print();
}
}
class NodeManager{
private Node root;//根节点
private int currentIndex = 0;//节点的当前序号,每次操作都从0开始
//添加
public void add(int data){
//先对root进行判断
if(root == null){
root = new Node(data);
}else{
//进入next,递归对接点进行操作
root.addNode(data);
}
}
//删除节点
public void del(int data){
if (root == null) {
return;
}
if (root.getData() == data) {
root = root.next;
}else {
root.delNode(data);
}
}
//打印所有
public void print(){
if(root != null){
System.out.print(root.getData()+" ");
root.printNode();
}
}
//查找是否存在节点
public boolean find(int data){
if (root == null) {
return false;
}
if (root.getData() == data) {
return true;
}else {
return root.findNode(data);
}

}
//更新
public boolean update(int oldData,int newData){
	if (root == null) {
		return false;
	}
	if (root.getData() == oldData) {
		root.setData(newData);
		return true;
	}else {
		return root.updateNode(oldData, newData);
	}
}
//在索引之前插入
public void insert(int index,int data){
	if (index < 0 ) {
		return;
	}
	currentIndex = 0;
	if (index == currentIndex) {
		Node newNode = new Node(data);
		newNode.next = root;
		root = newNode;
	}else {
		root.insertNode(index, data);
	}
}


private class Node{
	private int data;
	private Node next;//把当前类型作为属性
	
	public Node(int data){
		this.data = data;
	}

	public void setData(int data){
		this.data = data;
	}
	public int getData(){
		return data;
	}
	//添加节点
	public void addNode(int data){
		if(this.next == null){
			this.next = new Node(data);
		}else{
			this.next.addNode(data);
		}
	}
	//删除节点
	public void delNode(int data){
		if (this.next != null) {
			if (this.next.data == data) {
				this.next = this.next.next;
			}else {
				this.next.delNode(data);
			}
		}
	}
	//输出所有节点
	public void printNode(){
		if(this.next != null){
			System.out.print(this.next.data+" ");
			this.next.printNode();
			System.out.println();
		}
	}
	//查找节点
	public boolean findNode(int data){
		if (this.next != null) {
			if (this.next.data == data) {
				return true;
			}else {
				return this.next.findNode(data);
			}
		}
		return false;
	}
	//修改节点
	public boolean updateNode(int oldData,int newData){
		if (this.next != null) {
			if (this.next.data == oldData) {
				this.next.data = newData;
				return true;
			}else {
				return this.next.updateNode(oldData, newData);
			}
		}
		return false;
	}
	//插入节点
	public void insertNode(int index,int data){
		currentIndex++;
		if (index == currentIndex) {
			Node newNode = new Node(data);
			newNode.next = this.next;
			this.next = newNode;
		}else {
			this.next.insertNode(index, data);
		}
	}
}

}
输出结果在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值