【发布时间】:2009-10-05 22:54:20
【问题描述】:
我想知道是否可以像这样遍历链表:
currentNode = randomNode;//where randomNode may or may not = firstNode
prevNode = firstNode;
while(prevNode != currentNode && prevNode->link != currentNode)
{
prevNode = prevNode->link;
}
当我试图在单链表中查找 currentNode 之前的节点时,是否可以在 C++ 中执行此操作?
我试图在一个控制台应用程序中为学校作业实现类似的东西,所以假设我不能使用任何花哨的东西,比如 boost 库/列表/任何让生活更轻松的东西等等。所以基本上,我只有相当原始数据类型和库供我使用。
【问题讨论】:
-
为什么“想知道”如果你可以尝试一下,看看它是如何(以及是否)工作的?我在这里看不到任何问题,假设您始终至少有一个节点,并且
randomNode保证是列表中的一个有效节点(因此您永远不会“跑到最后”)。 -
您到底想做什么?在链表中搜索节点?
-
while 条件看起来有点奇怪...为什么要测试 prevNode != currentNode ?另外,列表可以为空吗?会不会出现 currentNode 不在列表中的情况?
-
@Pavel:它已经在我的代码中,但我还没有在一个可以轻松测试的地方。我想我会在这里检查一下它是否合乎逻辑,并且至少有可能我真正的核心问题是,就
prevNode = prevNode->link;去。 @Ashwin:我想你可以称之为搜索,但我计划使用这个循环来帮助我在两个节点之间插入一个新节点。 @Jim:我正在测试randomNode是否等于firdtNode在这种情况下之前没有节点。
标签: c++ pointers linked-list singly-linked-list