2013-09-30 4 views
-1

나는 연산자를 오버로드하려고합니다. 와 T 정보 nodeType에 * 링크 (단독 목록을 연결하는 친구입니다)연산자 - 연결된 목록에

반복자 클래스 :

내가 가진 노드 클래스가 nodeType에 * 첫째 nodeType에 * 현재 부울 offTheEdge을

Singly Linked List 클래스 : * 첫 번째 * 마지막

나는 operator ++ 메소드를 성공적으로 수정했으며 모든 테스트를 통과했습니다. 다음과 같이 코드는 다음과 같이

if(offTheEdge == true) 
{ 
    return *this; 
} 
else 
{ 
    if(current->link == NULL) 
    { 
     offTheEdge = true; 
     return *this; 
    } 
    else 
    { 
     current = current->link; 
    } 
} 

return *this; 

내 지시 사항은 다음과 같습니다 같은 연산자 ++,하지만 거꾸로 가고있다. 단일 링크 된 목록에서 뒤로 이동하기 은 처음부터 시작하여 this-> current가되는 노드를 식별해야 함을 의미합니다.

나는 무엇을 도와 드릴까요, 내가 이전 요소를 얻을 수 없으며 거꾸로 작동합니다. 고맙습니다!

operator--에 대한 나의 코드는 다음과 같습니다 내 목록이 2,4,6,8,101214161820입니다

ListIterator<T> temp; 

temp.current = first; 

while(temp.current->link != this->current) 
{ 
    temp.current = temp.current->link; 
} 

return temp; 

경우 .... 그것은 20 매번 반환

+1

지침에 따라 기본적으로 정확히 무엇이 수행되는지 알려줍니다. "처음부터 시작해야하고, 현재 -> 현재의 노드 뒤에있는 노드를 식별해야합니까? 지금까지 가지고있는 것을 보여줄 수 있습니까? – GWW

+0

전체 목록을 반복하십시오 util'current-> link == oldCurrent' – goji

+0

즉, 'head'에서 시작하여 루프를 사용해야합니다. – Adam

답변

0

내가 알 수있는 한 실제 반복자는 코드에서 변경되지 않습니다. 연산자 ++ 코드에는 current = current->link이 있지만 연산자에서는 임시 반복자 만 변경합니다 (즉, this->current은 실제로 변경되지 않습니다).

관련 문제