2012-05-24 3 views
0

연결된 목록에서 특정 개체의 색인을 찾으려고합니다. -1을 반환하려면 개체가 내 목록에 존재하지 않습니다. 다음은 제 코드입니다. 제발 저를 안내해주십시오.C++ 연결된 목록 : 개체의 IndexOf

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; 
} 
+0

왜 자체 링크 된 목록을 구현하고 있습니까? 'std :: list'의 문제점은 무엇입니까? – Fanael

+0

왜 자신의 선형 검색을 구현하고 있습니까? 'std :: find'의 문제점은 무엇입니까? – Fanael

+1

예 내 자신의 링크 된 목록을 구현하므로 C++로 시작합니다 – newbieLinuxCpp

답변

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입니다.

+0

대단히 감사합니다. D – newbieLinuxCpp

+0

@newbieLinuxCpp 도움을 주셔서 감사합니다! –