簡體   English   中英

Java鏈表的實現

[英]Implementation of linked list in Java

在一次采訪中,我被要求用Java實現一些鏈接列表方法。 我只有在C ++中實現鏈接列表的經驗,有些事情讓我擔心。 在閱讀了這個問題並看到答案之后,我仍然感到擔憂。

class Link {
    public int data1;
    public double data2;
    public Link nextLink;

    //Link constructor
    public Link(int d1, double d2) {
        data1 = d1;
        data2 = d2;
    }

    //Print Link data
    public void printLink() {
        System.out.print("{" + data1 + ", " + data2 + "} ");
    }
}

我的第一個問題是Java沒有指針。 我曾經見過類似Node* nextNode;東西Node* nextNode; 而不是public Link nextLink; 如何在沒有指針的情況下將值分配給Link? 是否因為在Java中new返回了實際的Link對象? 還是返回對它的引用? 如果它返回對引用的引用,那不是問題,因為引用與實際的Link對象不同嗎? 或者在Java中,任何對象的標識符實際上是引用嗎?

我知道這是一個見解,但是為什么鏈表似乎在C ++中出現的更多? 我猜該語言沒有內置支持,因此許多有關鏈接列表的教程都針對C ++(即使重點是數據結構)。

這是因為Java使用其引用來操縱對象。 眾所周知,java是按值傳遞的,但是對象的值是它們的地址。

Java擁有自己的LinkedList類,如果那是您要的內容

在這里檢查:

http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html

在Java中,對象由它們的引用操縱,並且引用與C ++中的指針相似,不同之處在於,您實際上無法像在C ++中那樣直接操縱地址。

在Java中,當使用對象時,將使用其引用,因此代碼中的Link只是對列表中下一個Node對象的引用。

Java中的對象引用與指針一樣好,值得注意的區別是您不能在此處執行指針算術。 MyClass myRef; 在Java中,僅表示將指向某個對象的引用。 當您執行MyClass myRef = new MyClass(); 對象並創建,其引用存儲在myRef中。 您應該意識到內存中的對象與myRef中的引用之間的區別。 它與我們在C / C ++中所做的幾乎相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM