Java学习总结:8

链表

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
//小关

开发可用链表

在这里插入图片描述
在链表中使用内部类是一个好的选择。
1.内部类可以使用private定义,这样一个内部类只能被一个外部类使用;
2.内部类可以方便地与外部类之间进行私有属性的直接访问。

例:数据增加:public void add(数据类型 变量)
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 篇原创文章 · 获赞 25 · 访问量 1541

猜你喜欢

转载自blog.csdn.net/weixin_45784666/article/details/104241253