很容易在c ++中实现有指针的链表。但它们如何在其他语言中实现(如java,python等)。我不想使用内置类(在JAVA中支持)用于链表,但我想要的是如何替换指针来创建链表?
答案 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 ++中,您提到过可以使用指针。换句话说,你使用对象的内存地址。
但这只是一种方式。如果所有对象都是从数组中引用的,那么您就可以通过它在该数组上的索引来引用一个对象。因此,链表中的每个元素都有一个整数,指定它所连接的对象的索引。
再举一个例子。如果您有一个字典,其中您将对象与字符串相关联。然后你可以使用字符串互相引用。
链接列表的核心概念不是指针,而是列表中的元素负责跟踪它所连接的元素。