Resumen de aprendizaje de Java: 8

Lista vinculada

class Node2{	//定义一个节点
    private String data;
    private Node2 next;		//要保存的下一个节点
    public Node2(String data){		//每一个Node2对象都必须保存相应的数据
        this.data=data;
    }
    public void setNext(Node2 next){
        this.next=next;
    }
    public Node2 getNext(){
        return this.next;
    }
    public String getData(){
        return this.data;
    }
    public void addNode2(Node2 newNode2){
        if(this.next==null){		//当前节点的下一个为null
            this.next=newNode2;		//保存新节点
        }
        else{		//当前节点之后还存在节点
            this.next.addNode2(newNode2);		//当前节点的下一个节点继续保存
        }
    }
    public void printNode2(){
        System.out.println(this.data);		//输出当前节点数据
        if(this.next!=null){
            this.next.printNode2();		//找到下一个节点继续输出(递归调用)
        }
    }
}
class Link{		//数据的设置和输出
    private Node2 root;		//根节点
    public void add(String data){
        Node2 newNode2=new Node2(data);		//设置数据的先后关系
        if(this.root==null){		//一个链表只有一个根节点的情况
            this.root=newNode2;		//将新的节点设置为根节点
        }
        else{		//根节点已存在
            this.root.addNode2(newNode2);		//交由Node2类来进行节点保存
        }
    }
    public void print(){		//输出数据
        if(this.root!=null){
            this.root.printNode2();		//交由Node2类输出
        }
    }
}
public class LinkDemo1 {
    public static void main(String args[]){
        Link link=new Link();		//由这个类负责所有的数据操作
        link.add("Hello");		//存放数据
        link.add("World");
        link.add("小关");
        link.print();		//展示数据
    }
}
//结果
//Hello
//World
//小关

Desarrollo de listas enlazadas disponibles.

Inserte la descripción de la imagen aquí
Usar una clase interna en una lista vinculada es una buena opción.
1. La clase interna se puede definir usando privado, de modo que una clase interna solo puede ser usada por una clase externa;
2. La clase interna puede acceder fácilmente directamente a las propiedades privadas con la clase externa.

Ejemplo: aumento de datos: public void add (variable de tipo de datos)
class Link3{
    private class Node{     //定义的内部节点类
        private String data;
        private Node next;      //下一个节点引用
        public Node(String data){       //每一个Node类对象都必须保存相应数据
            this.data=data;
        }
        public void addNode(Node newNode){
            if(this.next==null){    //若当前的下一个节点为null
                this.next=newNode;      //保存节点
            }
            else{       //向后继续保存
                this.next.addNode(newNode);
            }
        }
    }
    private Node root;
    public void add(String data){       //假设不允许有null
        if (data==null){        //判断数据是否为空
            return ;
        }
        Node newNode=new Node(data);        //要保存的数据
        if (this.root==null){       //当前没有根节点
            this.root=newNode;      //保存根节点
        }
        else{       //根节点存在
            this.root.addNode(newNode);
        }
    }
}
public class LinkDemo2 {
    public static void main(String args[]){
        Link3 all=new Link3();      //创建链表对象
        all.add("Hello");       //保存数据
        all.add("World");
        all.add(null);
    }
}

49 artículos originales publicados · Me gusta 25 · Visitas 1541

Supongo que te gusta

Origin blog.csdn.net/weixin_45784666/article/details/104241253
Recomendado
Clasificación