使用乌龟和野兔算法可以改善这一点

时间:2011-11-01 03:31:16

标签: linked-list

我试图理解C中的链表,我有一个程序,它在循环双列表中计算值为10的节点。我可以对这个程序应用乌龟和野兔算法吗?如果是,那么如何?感谢

int count(node *current, node *start, int c)
{
    if(current == NULL)
        return c;
    if((current->value)==10)
        c = c + 1;
    if(current->next == start)
        return c;
    return count(current->next, start,c);
}

我的尝试:

int count(node *start, int c)
{

    node *fast = start;
    if(start == NULL)
    return 0;
    if(!(fast=fast->next))
    if((start->roll_no)==10)
        c = c + 1;
    if(fast==start)
        return c;
    return count(start->next,c);
}

1 个答案:

答案 0 :(得分:0)

这是我的c ++版本,工作正常。

int HasCycle(Node* head)
{
    Node* tr = head;
    Node* hr = tr;
    while(1)
    {
        if(!hr)
            return 0;
        hr = hr->next;
        if(!hr)
            return 0;
        hr = hr->next;
        tr = tr->next;
        if(hr == tr)
            return 1;
    }

    return 0;
}