如何遍历循环链表中的每个第二个节点?

时间:2014-11-17 04:34:13

标签: c linked-list

在遍历数组的for循环中,我可以遍历循环变量增量为2的数组的每个第二个索引。但是如何使用任何循环来访问循环链表中的每个第二个节点?我假设我可以从任何方向遍历每个节点,但我想要做的是,如果a-b-c-d-e-a是一个循环链表,我想像a-c-e-b-d-a-c-那样遍历......就像这样......

1 个答案:

答案 0 :(得分:1)

不确定你想要在这里实现什么,但无论如何,你可以通过使用节点的下一个下一个指针(和/或前一个指针,如果它是双重链接)简单地移动到每个第二个节点。

您可以像这样循环执行此操作;

loop (condition) {
     traveler = traveler->next->next;

     // Do something with node
     ...
}

这里,您的traveler节点只是遍历列表的虚拟节点。

由于您的链接列表是循环的,因此您的condition必须是这样的,您需要找到一种终止循环的方法,而不是检测下一个节点(traveler)是否为NULL