int money;
struct Data *next;
}DATA;
// 實現鏈表的排序函數(這裏是壹個單向鏈表的排序實現)
DATA* test(DATA* head){
DATA *pi;
DATA *pj;
DATA *prev_i=NULL;
DATA *prev_j=NULL;
int count=0; // 如果count=0,就是鏈表頭部與其他元素交換,否則就是內部元素之間進行交換
// 冒泡進行鏈表排序(由大到小)
for(pi=head;pi;pi=pi->next){
prev_j = NULL;
for(pj=pi; pj; pj=pj->next){
if(pi->money < pj->money){
if(count >0){
prev_i->next = pj;
}
DATA *p1 = pi;
DATA *p2 = pj;
if(pi->next == pj){ // 兩個元素之間相鄰的
// 進行交換
DATA *tmp = p1;
p1->next = p2->next;
p2->next = p1;
}else{ // 兩個元素之間不相鄰的
// 進行交換
prev_j->next = p1;
DATA *tmp = p1->next;
p1->next = p2->next;
p2->next = tmp;
}
// 保持pi,pj指向的鏈表對應下標位置不變
pi = p2;
pj = p1;
// 讓頭指針指向包含money值最小的元素
if(count == 0){
head = pi;
}
}
prev_j = pj; // 指向pj指向的前壹個元素
}
count++;
prev_i = pi; // 指向pi的前壹個元素
}
// 打印驗證
return head;
}