[编辑]修复了我的代码。是 while(temp != NULL),而不是 while(temp->next != NULL)。抱歉插入错误的代码。
今天我参加了一个在线编程测试。面试官使用 Codility 来评估我的代码和其他受访者。在某个时刻,有人提出了有关链接列表的问题。它即将计算一个链表有多少项。我做了唯一可能的方法来做到这一点,AFAIK:
//This is struct declaration
struct SomeStruct
{
int value;
SomeStruct* next;
}
int elementCount(SomeStruct* list)
{
int count = 0;
if(list != NULL)
{
SomeStruct* temp = list;
while(temp != NULL)
{
count++;
temp = temp->next;
}
}
return count;
}
我记得当我发送这个代码作为这个问题的答案时,Codility 指出这个解决方案是错误的,因为它消耗了太多时间来执行任务。在我的脑海中,在这个关于 SO 的线程中,没有其他方法可以在不遍历链表的情况下获取链表的大小,而不是以简单的方式。
当 Codility 说此解决方案错误时,是否存在问题?还是有其他方法?
PS:允许使用STL的测试