我有一个关于在结构中对元素进行排序的问题。如果我有两种结构:对结构中的特定元素进行排序
typedef struct
{
char name[25],surname[25];
int number;
}PLAYER;
typedef struct
{
char nameofteam[25];
int numberofplayers;
PLAYER *players;
}TEAM;
如何通过在球衣(int number)
上升的数字顺序关于球员在一个团队中的数据进行排序?功能原型是void sort(TEAM *)
。
这给出了一个错误.exe has stopped working
:
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;
}
}
的问题是关于球衣(int number)
这个数字是不是在结构TEAM
。
当分拣特定元素是在结构上,然后检查会是这样的:
if(p[i].element > p[j].element)
我应该在这个函数中使用动态分配*players
?
感谢您的答案。
我认为索引'p-> players []'而不是'p []'会对这个算法产生奇迹,*无论如何分配'players'。现在你正在尝试根据他们的* first *球员的数量对多个*球队*进行排序。 – WhozCraig 2015-02-10 09:38:40
而你不想使用'qsort'? – 2015-02-10 09:39:54
我总是创建自己的函数,但如果你有一个qsort的想法,然后让我知道。谢谢。 – user300045 2015-02-10 09:45:49