Performance 更快地访问链接列表中的节点

Performance 更快地访问链接列表中的节点,performance,language-agnostic,linked-list,Performance,Language Agnostic,Linked List,如果链表变大,访问链表中节点的速度可能会非常慢。我确实想到了一种加速访问的方法:有一个阵列(也是一个LL),每个100个节点都有捷径。这样,如果我想得到第205个元素,程序必须通过这个“路径”:shortcut to[100]->shortcut to[200]->[201]->……->[205]。这比从整个LL到第205个元素——5个“步骤”要快得多,而不是204个。是的,如果我想要第n个第99个元素,它会变慢,但是程序会跳过LL的很大一部分以到达那里-从长远来看会更快 但这些捷径需要在添加和

如果链表变大,访问链表中节点的速度可能会非常慢。我确实想到了一种加速访问的方法:有一个阵列(也是一个LL),每个100个节点都有捷径。这样,如果我想得到第205个元素,程序必须通过这个“路径”:
shortcut to[100]->shortcut to[200]->[201]->……->[205]
。这比从整个LL到第205个元素——5个“步骤”要快得多,而不是204个。是的,如果我想要第n个第99个元素,它会变慢,但是程序会跳过LL的很大一部分以到达那里-从长远来看会更快

但这些捷径需要在添加和删除更多元素后重新调整。删除并不是一个真正的问题——删除一个元素并设置一些指向下一个节点的捷径——这些捷径指向正式的第n个节点。添加更多数据是一个问题-添加新元素时,某些节点必须设置为指向以前的节点。为了获得这些元素,程序必须从最后一条仍然指向第n个元素的捷径开始,遍历列表。除非节点也指向前面的元素,否则整个过程可能会变得像从向量中移除元素一样慢


有没有办法加快访问速度,使添加和删除元素的过程保持相当快的速度?这只是一个好奇的问题,而不是在实际程序中使用它是否是一个好主意。

您使用的数据结构错误。链表最好用于顺序访问的列表,而不是随机访问的集合。因此,最好使用某种哈希表。

您错过了“这只是一个好奇的问题,而不是在实际程序中使用它是否是一个好主意”这句话。我明白,随机访问不是一个好主意,但有没有办法加快访问速度?我没有错过,这就是我的全部观点。列表用于顺序访问,而不是随机访问。