所以我在关于坐在桌子旁的玩家的编程任务时遇到了一些麻烦。该程序应该能够在刚转弯的玩家之后添加玩家。该任务应该向我们展示如何在任何地方将数据添加到链表中。所以当我使用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 ++中
答案 0 :(得分:2)
你班上的成员需要保留最后一个转弯的玩家。
class CircleList
{
//...
PlayerNode* pLastPlayer;
};
最初,设置为pFront
并且每次调用play
时都会将其移至下一个播放器。
void CircleList::play()
{
//logic with pLastPlayer here
//at the end move it
pLastPlayer = pLastPlayer->next;
}
答案 1 :(得分:1)
该行
p-> pNext; //My attempt to move to the next node.
不会将任何内容移动到下一个节点。
您应该存储/分配p->pNext
。