链表 - 移动到下一个节点

Linked List - Moving to the next node

本文关键字:下一个 节点 移动 链表      更新时间:2023-10-16

所以我在关于坐在桌子旁的玩家的编程任务中遇到了一些麻烦。该程序应该能够在刚刚转弯的玩家之后添加玩家。该作业应该向我们展示如何在任何地方将数据添加到链表中。因此,当我使用 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 turnn";
        p-> pNext; //My attempt to move to the next node.
    }
    else
    {
        cout<<"There are no players. Please ADD a player.n";
    }
}

所以这显然是行不通的。有人可以向我解释一下我将如何转移到下一个球员吗?

PS - 代码在C++

您需要在班级中保留最后一个回合的玩家的成员。

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

最初,它设置为 pFront 并且每次调用play时都会将其移动到下一个玩家。

void CircleList::play()
{
   //logic with pLastPlayer here
   //at the end move it
   pLastPlayer = pLastPlayer->next;
}
<</div> div class="answers">

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

不会将任何内容移动到下一个节点。您可能应该存储/分配p->pNext某些东西。