大家好,怎么将联系人信息链表按姓名排序啊 还要将序号也按此顺序更新!!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct contact
{
char name[11];//姓名
char gender;//性别
int id;//序号
long long tele;
long long qq;
int class;//班级
struct contact *next;
} CON;
CON *head=NULL;//初始化全局变量head
void add()//添加联系人并存入文件
{
FILE *fp;
char name[11];//姓名最多十个字母
char gender;
int id,n;
long long tele;
long long qq;
int class;
if((fp=fopen("contacts.txt","a"))==NULL)//注意这里采用的时追加信息,即在原联系人后继续添加
{
printf("open file error!\n");
exit(1);
}
printf("请输入要添加的联系人个数:\n");
scanf("%d",&n);
printf("请输入要添加的联系人信息:\n");//每人各占一行,每个信息用空格隔开
for(int i=0;i<n;i++)
{
scanf("%s %d %c %lld %lld %d",name,&id,&gender,&tele,&qq,&class);
fprintf(fp,"%s %d %c %lld %lld %d\n",name,id,gender,tele,qq,class);
}
fclose(fp);
}
CON *chain()//将文件中的联系人信息存在新链表中
{
CON *h,*p,*q;
char name[11],gender;
int id,class;
long long tele,qq;
FILE *fp;
h=(CON*)malloc(sizeof(CON));
p=h;
if((fp=fopen("contacts.txt","r"))==NULL)
{
printf("open file error!\n");
exit(1);
}
while((fscanf(fp,"%s %d %c %lld %lld %d\n",&name,&id,&gender,&tele,&qq,&class))!=EOF)//提取文件中的信息
{
q=(CON*)malloc(sizeof(CON));
strcpy(q->name,name);
q->id=id;
q->gender=gender;
q->tele=tele;
q->qq=qq;
q->class=class;
p->next=q;
p=q;
}//构建链表并存入信息
p->next=NULL;
return h;
}
int main()
{add();
head=chain();
//这里要加一个排序函数
}