0

リンクリストで特定のオブジェクトのインデックスを見つけようとしています。-1を返したいのですが、オブジェクトがリストに存在しません。以下は私のコードです、私を導いてください。

int List::indexOf(const Object& o) const
{
    Node* tempNode = first;
    int count = 0;
    while(tempNode != NULL)
    {
        if (o.compare(tempNode->o) == 0)
        {
            break;
        }
    ++count;
    tempNode = tempNode->next;
    }
    return count;
}
4

1 に答える 1

1

ループの中から戻ってみませんか?

Node* tempNode = first;
    int count = 0;
    while(tempNode != NULL)
    {
       if (o.compare(tempNode->o) == 0)
       {
           //return the count when you found a match
           return count;
       }
       ++count;
       tempNode = tempNode->next;
    }
    //return -1 if no match is found
    return -1;
}

ノードが見つかったかどうかを示す補助を保存することもできますが、このアプローチはよりクリーンなIMOです。

于 2012-05-24T17:23:44.267 に答える