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);
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章