如何计算链表中的节点数而不遍历它?

时间:2011-06-16 08:01:12

标签: c linked-list

我在接受采访时被问到如何在不遍历列表的情况下计算链表中的节点数量?有没有办法实现这个目标?

4 个答案:

答案 0 :(得分:12)

我能想到的唯一方法是添加一个节点数的计数器,每次调用 add insert 方法时,这些计数器会递增,并在减去时递减调用 delete 。你不能对占用内存做出假设,因为作为一个链表,你不能保证所有节点都在同一个内存块中(事实上,这是非常不可能的)。

答案 1 :(得分:2)

如果您使用malloc等动态进行分配,那么除了每次插入/删除时都更新计数器之外别无他法。如果您没有动态进行分配,那么您可能还没有实现链接列表。

答案 2 :(得分:0)

其他人说的是完全正确的。在你看之前你怎么知道有多少东西?

您需要维护计数,并在插入/删除时递增/递减计数。这是(最|唯一)可靠的方式。

答案 3 :(得分:0)

在结构中添加一个计数器,使链表不是单独循环。而不是遍历整个列表只是遍历到初始节点的prev节点。