尝试直接跳转到链接列表中的节点

时间:2011-02-14 05:51:15

标签: c++

您好我不知道C ++中是否有一个命令可以直接跳转到链表中的第5个节点?我知道:p->接下来我可以尝试去下一个节点但是如果我想去第56个右边的awat有什么方法呢?喜欢p-> next(56)还是什么?谢谢

5 个答案:

答案 0 :(得分:3)

如果链表没有像p-> get(56)这样的命令,那么你必须编写自己的使用for循环的函数。它获取你想要的列表和元素的数量,然后接下来调用这个次数。

答案 1 :(得分:2)

没有这样的“命令”。链表的一个特征是按位置定位特定节点的速度较慢。当然,除非您已经存储了指向该节点的指针。

如果这是一个问题,那么链表就不是适合您目的的正确数据结构。

答案 2 :(得分:1)

至少如果您有类别InputIterator的迭代器(std::list属于此类别),则可以使用std::advance。例如,如果要让迭代器指向列表开头的第五个元素:

std::list<int> l;
// ...
std::list<int>::iterator it = l.begin();
std::advance(it, 4);
// Now it points to the fifth element

但正如其他人已经提到的那样:链表不应该随机访问。你总是需要通过它来获得一定的条目。因此,std::advance会对大型列表执行非常

答案 3 :(得分:0)

C ++不提供您可以在该级别访问的链接列表类型。它确实有std :: list&lt;&gt;,它提供封装。您不能直接索引到链接列表...虽然您可以从第一个(或其他已找到的)元素前进56步,但必须遍历每个节点,这是相对低效的。如果你需要更好的表现,你应该重新考虑你选择的容器:也许一个矢量或地图会更合适。

答案 4 :(得分:0)

这是链接列表的本质。你必须一直遍历到第n个元素。