如何在不使用指针的情况下实现链接列表?

时间:2012-08-24 18:53:55

标签: java c++

很容易在c ++中实现有指针的链表。但它们如何在其他语言中实现(如java,python等)。我不想使用内置类(在JAVA中支持)用于链表,但我想要的是如何替换指针来创建链表?

7 个答案:

答案 0 :(得分:26)

它们是使用引用来实现的,这些引用本质上是(不包括语法)指针,您不能使用指针算法(在某些语言中它们也不能为null)。在许多语言中,引用是使用变量的默认方式,不像C ++,默认值是按值。

答案 1 :(得分:5)

使用其他语言,您可以处理与指针密切相关的引用。

答案 2 :(得分:2)

如前所述,使用引用代替指向内存块的指针。就像在C ++中一样

Struct Node {
  Node *last;
  Node *next;
}

它看起来像这样:

Struct Node {
  Node last;
  Node next;
  }

答案 3 :(得分:0)

当您编写自己的课程时,请说class node,并让每个node将字段保存到下一个node,您实际上是对下一个节点的引用(如果这是最后一个)

答案 4 :(得分:0)

一个好的数据结构类将向您展示链接列表可以使用任何语言实现,例如FORTRAN。

您可以使用其他方法找到下一个链接,而不是使用指针。使用数组,而不是指针,您将使用索引到下一个元素。

因此,您可以使用文件位置而不是指针在随机访问文件中实现链接列表。

答案 5 :(得分:0)

你可以在这本书中找到一个好的答案 - http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844 - 我将总结一下我记得的你。

基本上你将有两个大小相等的数组(希望大于n,其中n =你想要存储的元素数)。我们称它们为阵列A和阵列B.

数组A [i]保存数据值。数组B [i]保持'下一个'值'k',使得A [i] - > next = A [k]。

希望这有帮助。

答案 6 :(得分:0)

请记住链接列表的概念是您可以从一个元素到另一个元素。你怎么做可能会有很大的不同。

例如,在C ++中,您提到过可以使用指针。换句话说,你使用对象的内存地址。

但这只是一种方式。如果所有对象都是从数组中引用的,那么您就可以通过它在该数组上的索引来引用一个对象。因此,链表中的每个元素都有一个整数,指定它所连接的对象的索引。

再举一个例子。如果您有一个字典,其中您将对象与字符串相关联。然后你可以使用字符串互相引用。

链接列表的核心概念不是指针,而是列表中的元素负责跟踪它所连接的元素。