用Java实现链表

时间:2014-04-11 07:51:07

标签: java c++ data-structures linked-list

在一次采访中,我被要求用Java实现一些链表方法。我只有在C ++中实现链表的经验,并且有些事情让我很担心。阅读完this question并看到答案后,我仍有疑虑。

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;而不是public Link nextLink;这样的内容。如何在没有指针的情况下将值分配给Link?是因为在Java new中返回一个实际的Link对象吗?或者是否返回对它的引用?如果它返回对它的引用并不是一个问题,因为引用不同于实际的Link对象?或者在Java中,任何对象的标识符实际上都是引用?

我知道这是一个意见问题,但为什么链接列表似乎更多地出现在C ++中呢?我猜这种语言没有内置支持所以很多关于链表的教程都是针对C ++的(即使重点是数据结构)。

4 个答案:

答案 0 :(得分:1)

这是因为java用它们的引用操作对象。众所周知,java是按值传递的,但是对象的值是它们的地址。

答案 1 :(得分:0)

Java有自己的LinkedList类,如果这就是你要求的

点击此处:

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

答案 2 :(得分:0)

在java中,对象由它们的引用操纵,引用类似于C ++中的指针,除了你不能像在C ++中那样直接操作地址。

在java中,当您使用Object时,使用它的引用,因此代码中的Link只是对列表中下一个Node对象的引用。

答案 3 :(得分:0)

java中的对象引用和指针一样好,明显的区别在于你不能在这里做指针算术。 java中的MyClass myRef;仅表示将指向某个对象的引用。 当你MyClass myRef = new MyClass();创建一个对象并创建它并将其引用存储在myRef中时。你应该意识到内存中的对象与myRef中的引用之间的区别。它与我们在C / C ++中的工作方式非常相似。