首页 新闻 会员 周边

C语言链表问题

0
悬赏园豆:20 [已解决问题] 解决于 2020-06-29 11:57

不知道为什么经过排序后打出来的成绩单就变成两项了,请大佬们帮忙看看

//对成绩进行排序
struct stu *rank_info(struct stu *head)
{
struct stu *p, *q, *r, *o, *s, *t;
int n = 1, i;
while(n != 0)
{
n = 0;
for (p = head; p->next != NULL; o = p, p = q)
{
q = p->next;
r = q->next;
if (p->grades.g < q->grades.g)
{
++n;
if (p = head) head = q;
else o->next = q;
q->next = p;
p->next = r;
s = p;
p = q;
q = s;
}
}

}
//添加学生排名信息
for (t = head, i = 1; t != NULL; t = t->next)  
{
	t->grades.rank = i++;
	printf("%s", t->name);
}

return head;

}

诸葛思颖的主页 诸葛思颖 | 初学一级 | 园豆:172
提问于:2020-06-29 10:05
< >
分享
最佳答案
0

if (p = head) 应该写成 if (p == head)

诸葛思颖 | 初学一级 |园豆:172 | 2020-06-29 11:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册