链接列表 - 移动到下一个节点

时间:2012-09-23 19:30:30

标签: c++ data-structures linked-list

所以我在关于坐在桌子旁的玩家的编程任务时遇到了一些麻烦。该程序应该能够在刚转弯的玩家之后添加玩家。该任务应该向我们展示如何在任何地方将数据添加到链表中。所以当我使用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 个答案:

答案 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