以下c语言菜单(关于使用链表排序成绩)如何改动?

2025-06-20 23:23:44
推荐回答(2个)
回答1:

你的代码不全,看不到具体链表构建。
从现有代码看:
1、建议结构指针初始化NULL(习惯)。struct person *head=NULL,*head1=NULL;
2、既然你定义了头指针head,正常习惯头指针是不存放数据的,只是next指向链表第一个节点。那么循环链表那里应该写while(p->next)而不是while(p!=NULL)。(除非你的head就是第一个节点)。
3、如像我上条所述,head是头指针,循环改成while(p->next),那么链表冒泡排序那里,p1=p->next;可以写p1=p->next->next;(当然你写p1=p->next;也不错,就是循环次数多点)

回答2:

以上代码的问题是
temp=p->Date,p->Date=p1->Date,p1->Date=temp;这句
temp和Date都是结构体类型,结构体类型与数组类似,只能每个成员逐一复制,不能采取以上整体交换方法。