public class lianbiao{
public static void main(String[] args) {
Nodemanager nm =new Nodemanager();
System.out.println("-------add-------");
nm.add(5);
nm.add(4);
nm.add(3);
nm.add(2);
nm.add(1);
nm.print();
System.out.println("------del--------");
nm.del(3);
nm.print();
System.out.println("------find--------");
System.out.println(nm.find(1));
System.out.println("-------update-------");
nm.update(1,10);
nm.print();
System.out.println("-------insert-------");
nm.insert(2,20);
nm.print();
}
}
class Nodemanager{
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 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{
root.updateNode(oldData, newData);
return true;
}
}
public void insert(int index,int data){
if(index<0){return ;}
currentIndex=0;
if(index==currentIndex){
Node newNode=new Node(data);
root.next=newNode;
root=newNode;
}else{
root.insertNode(index, data);
}
}
private class Node{
private int data;
private Node next;
public Node(){}
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();
}
}
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(root!=null){
if(this.next.data==oldData){
this.next.data=newData;
return true;
}else{
this.next.updateNode(oldData, newData);
return true;
}
}
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);
}
}
}
}