Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 2009的通用链接列表_Delphi_Generics_Data Structures_Delphi 2009_Linked List - Fatal编程技术网

Delphi 2009的通用链接列表

Delphi 2009的通用链接列表,delphi,generics,data-structures,delphi-2009,linked-list,Delphi,Generics,Data Structures,Delphi 2009,Linked List,我在找泛型。收藏,并注意到并没有链接列表。当然它们制作起来很简单,但我觉得奇怪的是没有一个(或者我只是错过了)。与新的现代数据结构相比,链表是否已经过时,或者是否需要通用链表?有人知道吗?在过去,几乎所有严肃的软件都包含链表或树 我很少使用链表,但树是另一回事 随着动态数组的引入,对链表的需求就没有那么大了。但我可以想象,如果您的数据结构经常更改(添加+删除),您会想要使用它 您可以使用容器类和元素记录轻松创建通用链表。我不知道现有Delphi RTL中有任何通用链表 但是,它们作为数据结构仍然

我在找泛型。收藏,并注意到并没有链接列表。当然它们制作起来很简单,但我觉得奇怪的是没有一个(或者我只是错过了)。与新的现代数据结构相比,链表是否已经过时,或者是否需要通用链表?有人知道吗?

在过去,几乎所有严肃的软件都包含链表或树

我很少使用链表,但树是另一回事

随着动态数组的引入,对链表的需求就没有那么大了。但我可以想象,如果您的数据结构经常更改(添加+删除),您会想要使用它


您可以使用容器类和元素记录轻松创建通用链表。

我不知道现有Delphi RTL中有任何通用链表

但是,它们作为数据结构仍然非常有用。尤其是如果在链表中包含变量,如b-树或二叉树。与常规列表不同,链表可以展开、编辑或修改,而无需在内存中移动数据。它们非常容易版本化,并且在纯功能代码中工作良好,不允许对现有数据进行变异。因此,它仍然是一种非常有用的数据结构。

您知道它的功能吗


我认为该单元的
TLinkedList
正是您想要的

这不就是tStringList的作用吗

(闪避)


实际上,任何通用tList都可以作为一个链表工作,并提供所需的大部分功能。从我们的祖先那里传下来的一种古老技术,即在每个记录中存储指向内存的指针,并导航到该记录,这种技术很容易被动态数组所取代,并且可以做一些更一般的事情。

当插入到TList时,需要对数组中其后的所有内容进行内存移动。一个链表只需要改变一个指针。没错,对于大的链表来说,这样会更有效,而且写起来也不难。ulrichb有最好的答案,那里的实现正是您所要求的。