加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 在访谈测试中使用的LinkedList

发布时间:2020-12-16 03:34:20 所属栏目:百科 来源:网络整理
导读:[编辑]修正了我的代码.是while(temp!= NULL),而不是while(temp- next!= NULL).很抱歉插入错误的代码. 今天我参加了在线编程测试.采访者使用Codility评估我的代码和其他受访者. 在某个时刻,关于链接列表的问题已经提出.它将计算链表有多少项. 我做了唯一可
[编辑]修正了我的代码.是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指出这个解决方案是错误的,因为它耗费了太多时间来执行任务.
在我的头脑和this thread在SO上没有其他方法可以获得链表的大小而不需要遍历它,而不是简单的方式.

当Codility说这个解决方案错了时会有问题吗?还是有另一种方法?

PS:允许使用STL的测试

解决方法

好吧,你不必为每次迭代评估间接temp->接下来两次.

你可以干脆做

int count( SomeStruct const* pNode )
{
    int result = 0;
    while( pNode != 0 )
    {
        ++result;
        pNode = pNode->next;
    }
    return result;
}

此外,作为WhozCraig notes,您的代码在逻辑上是错误的(通过一个结果产生关闭),而不仅仅是潜在的低效率.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读