2012-09-23 2 views
0

그래서 테이블 주위에 앉아있는 플레이어에 대한 프로그래밍 할당 문제가 있습니다. 이 프로그램은 방금 선수를 추가 한 후에 선수를 추가 할 수 있어야합니다. 할당은 어디서나 연결된 목록에 데이터를 추가하는 방법을 보여줍니다. PLAY 명령을 사용하면 내 문제가 발생합니다. 이것은 한명의 플레이어가 차례를 취할 수있게합니다.연결된 목록 - 다음 노드로 이동

예를 들어 플레이어 A, B 및 C가 있고 PLAY 명령이 실행되면 콘솔에 "플레이어 A가 돌아갑니다"라는 메시지가 표시됩니다. PLAY가 다시 실행되면 "B 플레이어가 돌아갑니다"라는 메시지가 표시됩니다.

내 코드는 목록의 첫 번째 플레이어가 재생할 수 있지만 다음 노드/플레이어로 이동하지 못하도록합니다.

void CircleList::play() 
{ 
    LinkedListOfPlayersNode *p=(*pFront).pNext; 
    if (p->pData!=NULL) 
    { 
     cout<<p->pData->getName()+" takes a turn\n"; 
     p-> pNext; //My attempt to move to the next node. 
    } 
    else 
    { 
     cout<<"There are no players. Please ADD a player.\n"; 
    } 
} 

이렇게 분명히 작동하지 않습니다. 누군가 다음 플레이어로 이동하는 방법을 설명 할 수 있습니까?

PS - 코드는 C++

답변

2

당신은 회전을 마지막으로 촬영 한 플레이어를 유지 클래스의 구성원이 필요합니다입니다.

class CircleList 
{ 
    //... 
    PlayerNode* pLastPlayer; 
}; 

처음에이 pFront로 설정하고 모든 시간 play를 호출 다음 플레이어로 이동합니다.

void CircleList::play() 
{ 
    //logic with pLastPlayer here 

    //at the end move it 
    pLastPlayer = pLastPlayer->next; 
} 
1

라인

p-> pNext; //My attempt to move to the next node. 

는 다음 노드로 아무것도 이동하지 않습니다. p->pNext을 저장하거나 지정해야합니다.