gpt4 book ai didi

c - 对结构中的特定元素进行排序

转载 作者:行者123 更新时间:2023-11-30 15:24:24 24 4
gpt4 key购买 nike

我有一个关于结构中元素排序的问题。如果我有两个结构:

typedef struct
{
char name[25],surname[25];
int number;
}PLAYER;

typedef struct
{
char nameofteam[25];
int numberofplayers;
PLAYER *players;
}TEAM;

如何按照 Jersey 上的号码(int number)升序对球队中球员的数据进行排序?函数原型(prototype)为void sort(TEAM *)

这会产生错误.exe已停止工作:

void sort(TEAM *p)
{

int i,j;
for(i=0;i<p->numberofplayers-1;i++)
for(j=i+1;j<p->numberofplayers;j++)
if((p[i].players)->number > (p[j].players)->number)
{
TEAM temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}

问题是 Jersey 上的号码(int number)不在结构TEAM中。

当用于排序的特定元素在结构中时,检查将如下所示:

if(p[i].element > p[j].element)

我应该在此函数中对*players使用动态分配吗?

感谢您的回答。

最佳答案

您的代码逻辑正在对p进行索引,这是团队基指针,而不是玩家基指针em> 团队。随处可见:

p[i]

应该是这样的:

p->players[i]

解决这个问题后,还需要适当的交换温度,它应该是PLAYER,而不是TEAM

类似这样的事情:

void sort(TEAM *p)
{
int i,j;
for(i=0; i<p->numberofplayers-1; ++i)
{
for(j=i+1; j<p->numberofplayers; ++j)
{
if(p->players[i].number > p->players[j].number)
{
PLAYER tmp = p->players[i];
p->players[i] = p->players[j];
p->players[j] = tmp;
}
}
}
}

所有这些假设您正确分配了团队的 players 成员,并且 numberofplayers 准确地反射(reflect)了该分配。

祝你好运。

关于c - 对结构中的特定元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28428305/

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