#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct student{
char name[16];
int score;
struct student *next;
};
struct student *head=NULL, *p, *t;
struct student* link_to_tail(int n)
{
head=NULL;
for (int i=1; i<=n; i++){
p=(struct student*)malloc(sizeof(struct student));
if (p==NULL) return NULL;
scanf("%s", p->name);
scanf("%d", &p->score);
p->next=NULL;
if (head==NULL){
head=p;
}else{
t->next=p;
}
t=p;
}
return head;
}
void print(struct student *head)
{
if (head==NULL){
printf("empty list\n");
return;
}else{
t=head;
while (t!=NULL){
printf("%s %d\n", t->name, t->score);
t=t->next;
}
}
}
struct student* link_sort(struct student *head)
{
struct student *small;
p=head;
while (p->next!=NULL){
t=p->next;
small=p;
int min=p->score;
while (t!=NULL){
if (t->score<min){
small=t;
min=t->score;
}
t=t->next;
}
if (small!=p){
char x[16];
int y=small->score;
strcpy(x, small->name);
strcpy(small->name, p->name);
strcpy(p->name, x);
small->score=p->score;
p->score=y;
}
p=p->next;
}
return head;
}
int main()
{
head=link_to_tail(5);
head=link_sort(head);
print(head);
return 0;
}
C语言课程设计——链表选择排序
最新推荐文章于 2021-12-12 13:14:18 发布