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

mcdcgff0  于 2021-07-09  发布在  Java
关注(0)|答案(7)|浏览(456)

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

rks48beu

rks48beu1#

一个好的数据结构类将向您展示一个链表可以在任何使用数组的语言中实现,比如fortran。
您可以使用其他方法来定位下一个链接,而不是使用指针。对于数组,可以使用指向下一个元素的索引,而不是指针。
因此,可以使用文件位置而不是指针在随机访问文件中实现链表。

edqdpe6u

edqdpe6u2#

当你写自己的课时,说 class node ,每个 node 把一块地留到下一块地上 node ,您实际上持有对下一个节点的引用(如果是最后一个节点,则为null)

bjg7j2ky

bjg7j2ky3#

对于其他语言,您需要处理与指针密切相关的引用。

flseospp

flseospp4#

你可以在这本书里找到一个很好的答案-http://www.amazon.com/introduction-algorithms-thomas-h-cormen/dp/0262033844 -我来给你总结一下我的回忆。
基本上,您将有两个大小相等的数组(希望大于n,其中n=要存储的元素数)。我们称它们为数组a和数组b。
数组a[i]保存数据值。数组b[i]保存'next'值'k',使得a[i]->next=a[k]。
希望这有帮助。

qncylg1j

qncylg1j5#

记住链表的概念是可以从一个元素到另一个元素。你怎么做会很不一样。
例如,在c++中,您提到可以使用指针。也就是说,另一种方法是使用对象的内存地址。
但这只是一种方法。如果您的所有对象都是从一个数组引用的,那么您就可以通过对象在该数组上的索引来引用该对象。所以链表中的每个元素都有一个整数,指定它所连接的对象的索引。
再举一个例子。如果你有一本字典,把对象和字符串联系起来。然后可以使用字符串相互引用。
链表的核心概念不是指针,而是链表中的元素负责跟踪它所连接的元素。

ruarlubt

ruarlubt6#

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

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

它看起来是这样的:

Struct Node {
  Node last;
  Node next;
  }
mrphzbgm

mrphzbgm7#

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

相关问题