gpt4 book ai didi

c++ - 链表的循环遍历

转载 作者:行者123 更新时间:2023-11-28 07:56:15 26 4
gpt4 key购买 nike

所以我在使用其中一个函数时遇到了一些问题。该程序(用 C++ 编写)玩游戏, table 上坐着很多玩家。每次调用我的播放功能时,它都应该向控制台显示游戏中的玩家。每次调用它时,它都应该按顺序显示玩家。在它击中最后一个玩家后,它将从列表/表格的开头开始。 void CircleList::play()

LinkedListOfPlayersNode *p=(*pFront).pNext;
if (p->pData!=NULL)
{
cout<<p->pData->getName()+" takes a turn\n";


pLastPlayer = pLastPlayer->pNext;
}
else
{
cout<<"There are no players. Please ADD a player.\n";
}

}

假设我们添加了 A、B 和 C。当您使用 PLAY 命令时,C 应该轮到,然后是 B,然后是 A。就目前使用上面的代码而言,它会显示 C Takes但是,转弯之后它立即崩溃了。那么我的代码有什么问题呢?有没有更好的方法来写这个?

最佳答案

我很确定您希望遍历看起来像这样:

LinkedListOfPlayersNode *p = pNextPlayer ? pNextPlayer : pFront;

if (p && p->pData) // not sure why pData is also dynamic. look into that.
{
cout<<p->pData->getName()+" takes a turn\n";
pNextPlayer = p->pNext;
}
else
{
cout<<"There are no players. Please ADD a player.\n";
}

每次轮到玩家时,他们都会接手,下一位玩家就是该玩家的下一个指针。当你在牌 table 上的最后一位玩家轮到你时,p->pNext 将为空,下一个调用将重置为列表的头部。

至少那是我认为您想要达到的目标。通过将 pNextPlayer 设置为 pFrontNULL 来启动它;没有区别。

关于c++ - 链表的循环遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12656745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com