LinkedList实现。类包含自己的对象

时间:2015-07-27 22:49:23

标签: java

伙计们,LinkedList的实施让我产生了一些误解。我知道如何实现LinkedList的所有方法,但我不明白为什么类Link在其自身内部(在类Link内)包含自己的对象。请问smb请解释为什么类Link里面包含自己的对象?有什么比喻吗?提前谢谢!

班级Link

package LinkedList;

public class Link {

    public String data;
    public Link next;

    public Link(String data){
        this.data = data;
        this.next = null;
    }

    public void display(){
        System.out.println(data);
    }
}

Class `LinkedList`

    class LinkedList{

        public Link firstLink;

        public LinkedList(){
            this.firstLink = null;
        }

        public void insert(String data){
            Link myLink = new Link(data);
            myLink.next = firstLink;
            firstLink = myLink;
        }

        public Link deleteFirst(){
            Link deletedLink = firstLink;
            firstLink = firstLink.next;
            return deletedLink;
        }

        public boolean search(String data){
            Link current = firstLink;
            while(current != null){
                if(current.data.equals(data)){
                    return true;
                }
                else{
                    current = current.next;
                }
            }
            return false;
        }

        public void displayList(){
            Link current = firstLink;
            while(current != null){
                current.display();
                current = current.next;
            }
        }

    }

班级LinkedTester

package LinkedList;

public class LinkTester {

    public static void main(String[] args){
        LinkedList theLinkedList = new LinkedList();
        theLinkedList.insert("A");
        theLinkedList.insert("B");
        theLinkedList.insert("C");
        theLinkedList.insert("D");
        theLinkedList.insert("E");

        theLinkedList.displayList();
        System.out.println();
        System.out.println(theLinkedList.search("A"));
    }
}

1 个答案:

答案 0 :(得分:2)

嗯,当你宣布

时,你需要明白这一点
public link next;

next不是类link的对象,它是一个可以指向类link的对象的变量,当你执行next = new link();时它是创建一个对象,next开始指向一个对象。

所以,这实际意味着,你的类list不包含它自己类型的对象,但是包含一个可以指向list类型的对象的变量,它是链表的基本概念(一个节点指向另一个节点,形成连续链)