📄 insert.c
字号:
#include"common.h"
void insert(MEM*head,MEM*newNod,int style)/*style是用于排序的参数*/
{
switch(style)
{
case 0: { MEM *back,*front;
front=head;
back=head->next;
if(head->next==null)
head->next=newNod;
else{
/*比较字符串长度*/ while((strcmp(newNod->number,back->number)>0)&&(back->next!=null))
{front=back;
back=back->next;}
if(strcmp(newNod->number,back->number)>0)
{ back->next=newNod;
newNod->next=null;}
else{ front->next=newNod;
newNod->next=back;}
}
}
break;
case 1: { MEM *back,*front;
front=head;
back=head->next;
if(head->next==null)
head->next=newNod;
else{
while((strcmp(newNod->name,back->name)>0)&&(back->next!=null))
{front=back;
back=back->next;}
if(strcmp(newNod->name,back->name)>0)
{ back->next=newNod;
newNod->next=null;}
else{ front->next=newNod;
newNod->next=back;}
}
}
break;
case 2: { MEM *back,*front;
front=head;
back=head->next;
if(head->next==null)
head->next=newNod;
else{
while((strcmp(newNod->number,back->number)>0)&&(back->next!=null))
{front=back;
back=back->next;}
if(strcmp(newNod->number,back->number)>0)
{ back->next=newNod;
newNod->next=null;}
else{ front->next=newNod;
newNod->next=back;}
}
}
break;
case 3:{ MEM *back,*front;
front=head;
back=head->next;
if(head->next==null)
head->next=newNod;
else{
while(newNod->salary>back->salary&&back->next!=null)
{front=back;
back=back->next;}
if(newNod->salary>back->salary)
{ back->next=newNod;
newNod->next=null;}
else{ front->next=newNod;
newNod->next=back;}
}
}
break;
default : printf("无效数字!\n");break;
}
}
void list(MEM *head){/*显示所有成员信息*/
int c;
MEM *p;
p=head->next;
printf("\n%3s%9s%9s%9s%10s%10s%11s%16s\n","编号","姓名","位置","年龄","身高","体重","工资","加入日期");
while(p!=null){
c=p->role;
switch(c)
{ case 0:printf("%3s%10s%9s%9d%10.2f%10.0f%11.0f%10d-%d-%d\n",p->number,p->name,"门将",p->age,p->high,p->weight,p->salary,p->joindate.year,p->joindate.month,p->joindate.day);break;
case 1:printf("%3s%10s%9s%9d%10.2f%10.0f%11.0f%10d-%d-%d\n",p->number,p->name,"中场",p->age,p->high,p->weight,p->salary,p->joindate.year,p->joindate.month,p->joindate.day);break;
case 2:printf("%3s%10s%9s%9d%10.2f%10.0f%11.0f%10d-%d-%d\n",p->number,p->name,"后卫",p->age,p->high,p->weight,p->salary,p->joindate.year,p->joindate.month,p->joindate.day);break;
case 3:printf("%3s%10s%9s%9d%10.2f%10.0f%11.0f%10d-%d-%d\n",p->number,p->name,"前锋",p->age,p->high,p->weight,p->salary,p->joindate.year,p->joindate.month,p->joindate.day);break;
default : break;
}
p=p->next;
}
printf("\n");
}
void writeToFile(MEM *head){/*把信息保存到文件*/
FILE *fp;
MEM *p;
if(head==null){
printf("向文件写入链表时,链表为空!\n");
return;
}
fp=fopen(FILENAME,"wb");/*以写的方式打开*/
p=head->next;
while(p!=null){
fwrite(p,sizeof(MEM),1,fp);/*把p中的信息写入到fp所指向的文件*/
p=p->next;
}
fclose(fp);/*关闭文件*/
}
MEM *loadFromFile(int style){
MEM *head,*node;
FILE *fp;
char c;
fp=fopen(FILENAME,"rb");/*以读的方式打开文件*/
if(fp==null){
printf("文件不存在或者打开不成功\n");
printf("需要新建此文件么?y/n\n");
c=getchar();
if((c=='n')||(c=='N'))
{
printf("程序即将结束\n");
exit(1);
}
else if((c=='y')||(c=='Y'))
{ fp=fopen(FILENAME,"wb");//以写方式打开文件时,若文件不存在,则自动生成同名文件
fclose(fp);
fp=fopen(FILENAME,"rb");
}
else {
printf("输入有错误请重新输入\n");
}
}
head=(MEM *)malloc(sizeof(MEM));/*动态开辟空间*/
head->next=null;
node=(MEM *)malloc(sizeof(MEM));
if(fread(node,sizeof(MEM),1,fp)==0)
printf("文件中没有数据\n");
else{
node->next=null;
insert(head,node,style);
while(feof(fp)==0)//读到文件尾的时候返回值是1,未到是0
{
node=(MEM *)malloc(sizeof(MEM));
if(fread(node,sizeof(MEM),1,fp)==1){
node->next=null;
insert(head,node,style);
}
else free(node);
}
}
fclose(fp);
return head;
}
void showAll(MEM *head){
list(head);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -