public class lianbiao {
public static void main(String[] args) {
NodeManager nodeuser = new NodeManager();
nodeuser.add(6);
nodeuser.add(2);
nodeuser.add(6);
nodeuser.add(8);
nodeuser.add(1);
nodeuser.add(3);
nodeuser.add(9);
nodeuser.add(60);
nodeuser.print();
nodeuser.insert(7,20);
nodeuser.print();
}
}
class NodeManager{
//根节点
private Node root;
private int nownode = 0;//节点的序号,每次从0开始
//提供外部访问的一套方法
public void add(int data){
//判断根节点是否为空
if (root==null){
root = new Node(data);
}else {
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();
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 {
return root.updateNode(oldData, newData);
}
}
//插入,向索引之前插入
public void insert(int index, int data){
if (index<0)return;
nownode = 0;
if (index == nownode) {
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();
}
}
//查找
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){
nownode++;
if (index==nownode){
Node newNode = new Node(data);
newNode.next = this.next;
this.next = newNode;
}else {
this.next.insertNode(index, data);
}
}
}
}