package lianbiao;
public class NodeManger {
private Node root;
private int currentIndex = 0;
//添加
public void add(int data) {
if (root == null) {
root = new Node(data);
} else {
root.addNode(data);
}
}
//删除
public void del(int data) {
if (root.getData() == data) {
root = root.next;
} else {
root.delNode(data);
}
}
//打印
public void print() {
if (root != null) {
System.out.print(root.getData() + "->");
root.printNode();
}
System.out.println();
}
//修改
public boolean update(int olddata, int newdata) {
if (root != null) {
if (root.getData() == olddata) {
root.setData(newdata);
return true;
} else {
return root.updateNode(olddata, newdata);
}
} else {
return false;
}
}
//插入
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);
}
}
//查找
public boolean find(int data) {
if (root == null) {
return false;
} else {
if (root.data == data) {
return true;
} else {
return root.findNode(data);
}
}
}
private class Node {
private int data;
private Node next;
//添加
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 (root == null) return;
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();
}
}
//修改
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);
}
} else {
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);
}
}
//查找
public boolean findNode(int data) {
if (this.next != null) {
if (this.next.data == data) {
return true;
} else {
return this.next.findNode(data);
}
} else {
return false;
}
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Node(int data) {
this.data = data;
}
}
}