printf(\按姓名排序\\n\ printf(\按性别排序\\n\ printf(\按语文排序\\n\ printf(\按数学排序\\n\ printf(\按英语排序\\n\ printf(\按计算机排序\\n\ printf(\按C语言排序\\n\ printf(\按平均分排序\\n\
printf(\请选择排序关键字和方式,以空格分开\\n1为升序,0为降序\\n\
fflush(stdin);
scanf(\
switch(sel) {
case 1:
for(;head->next!=NULL;)//读原链表 {
temp=(STU *)malloc(LEN);
*temp=*head->next;//temp成为要加入链表的数据点
beq=headq,q=beq->next; if(sort==1)
for(;(q!=NULL)&&(strcmp(temp->number,q->number)>=0);)//正序 { beq=q; q=q->next;
} else
for(;(q!=NULL)&&(strcmp(temp->number,q->number)<=0);)//隆序 { beq=q; q=q->next; }
temp->next=beq->next; beq->next=temp; p_free=head->next;
head->next=head->next->next;
free(p_free); }
free(head); //释放头结点原内存区 head=headq; //头结点指向新的内存区 shouldsave = 1; break;
case 2:
for(;head->next!=NULL;)//读原链表 {
temp=(STU *)malloc(LEN);
*temp=*head->next;//temp成为要加入链表的数据点
beq=headq,q=beq->next; if(sort==1)
for(;(q!=NULL)&&(strcmp(temp->name,q->number)<=0);)//正序 { beq=q; q=q->next; } else
for(;(q!=NULL)&&(strcmp(temp->name,q->number)>=0);)//隆序 { beq=q; q=q->next; }
temp->next=beq->next; beq->next=temp; p_free=head->next;
head->next=head->next->next;
free(p_free); }
free(head); head=headq; shouldsave = 1;
break;
case 3:
for(;head->next!=NULL;)//读原链表 {
temp=(STU *)malloc(LEN);
*temp=*head->next;//temp成为要加入链表的数据点
beq=headq,q=beq->next; if(sort==1)
for(;(q!=NULL)&&(temp->sex>q->sex);)//正序 { beq=q; q=q->next; } else
for(;(q!=NULL)&&(temp->sex
temp->next=beq->next; beq->next=temp;
p_free=head->next;
head->next=head->next->next;
free(p_free); }
free(head); head=headq;
shouldsave = 1; break;
temp->next=beq->next; beq->next=temp; case 4:
case 5:
case 6: case 7: case 8:
for(;head->next!=NULL;)//读原链表 {
temp=(STU *)malloc(LEN);
*temp=*head->next;//temp成为要加入链表的数据点
beq=headq,q=beq->next; if(sort==1)
for(;(q!=NULL)&&(temp->score[sel-4]>q->score[sel-4]);)//正序 { beq=q; q=q->next; } else
for(;(q!=NULL)&&(temp->score[sel-4]
相关推荐: