我有一個關於在結構中對元素進行排序的問題。如果我有兩種結構:對結構中的特定元素進行排序
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