/*
*
*
* å¦ç管çç³»ç»
*
*/
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <windows.h>
typedef struct Day{
int year;
int mon;
int day;
} DAY;
typedef struct std_info
{
int num;
char name[81];
int age;
int gender;
DAY birthday;
char address[256];
unsigned long phonenumber;
char Email[256];
} STD_DATE;
typedef struct node{
STD_DATE student;
struct node *next;
} LINK_LIST;
LINK_LIST *Creatnode(LINK_LIST *head)
{
LINK_LIST *p,*newnode;
p=head;
newnode=(LINK_LIST*)malloc(sizeof(LINK_LIST));
printf("å¦å·:");
scanf("%d",&newnode->student.num);
while (p)
{
if (p->student.num==newnode->student.num)
{
printf("è¾å
¥å¦å·éå¤ï¼è¯·éæ°è¾å
¥\n");
p=head;
printf("å¦å·:");
scanf("%d",&newnode->student.num);
continue;
}
p =p->next;
}
printf("å§å:");
fflush(stdin);
gets(newnode->student.name);
printf("å¹´é¾:");
scanf("%d",&newnode->student.age);
printf("æ§å«(1ãç·ï¼2ã女)éæ©1æ2:");
scanf("%d",&newnode->student.gender);
printf("åºçå¹´æ(YYYY-MM-DD):");
scanf("%d-%d-%d",&newnode->student.birthday.year,
&newnode->student.birthday.mon,
&newnode->student.birthday.day);
fflush(stdin);
printf("å°å:");
gets(newnode->student.address);
printf("çµè¯å·ç :");
scanf("%lu",&newnode->student.phonenumber);
fflush(stdin);
printf("E-mail:");
gets(newnode->student.Email);
return newnode;
}
LINK_LIST *CreatLink()
{
LINK_LIST *head=NULL,*Linkend=NULL,*p=NULL;
int n,i;
printf("请è¾å
¥éè¦å½å
¥çå¦ç人æ°\n");
scanf("%d",&n);
for (i=0;i<n;i++)
{ printf("请å½å
¥ç¬¬%dä½å¦ççä¿¡æ¯:\n",i+1);
p=Creatnode(head);
if (head)
{
Linkend->next=p;
}
else
{
head=p;
}
Linkend=p;
if (Linkend!=NULL)
{
Linkend->next=NULL;
}
}
return head;
}
void printfnode(LINK_LIST *thenode)
{
if (thenode==NULL)
{
printf("该信æ¯ä¸ºç©º\n");
return;
}
printf("å¦ å·:%d\n",thenode->student.num);
printf("å§ å:%s\n",thenode->student.name);
printf("å¹´ é¾:%d\n",thenode->student.age);
if (thenode->student.gender==1)
{
printf("æ§ å«:ç·\n");
}
else
printf("æ§ å«:女\n");
printf("åºçå¹´æ:%då¹´%dæ%dæ¥\n",thenode->student.birthday.year,
thenode->student.birthday.mon,
thenode->student.birthday.day);
printf("å° å:%s\n",thenode->student.address);
printf("çµè¯å·ç :%lu\n",thenode->student.phonenumber);
printf("E-mail:%s\n",thenode->student.Email);
return;
}
void findnode(LINK_LIST *head)
{
int type=0;
int number=0;
char name[81]={0};
LINK_LIST *p;
p=head;
if (p==NULL)
{
printf("请å
å½å
¥å¦çä¿¡æ¯\n");
return;
}
printf("请éæ©æ¥è¯¢æ¹å¼\n(1ãæå¦å·\n2ãæå§å):");
scanf("%d",&type);
if (type==1)
{
printf("请è¾å
¥å¦å·:");
scanf("%d",&number);
while (p)
{
if (p->student.num==number)
{
printfnode(p);
return;
}
p=p->next;
}
printf("没ææ¾å°è¯¥å¦å·å¦çä¿¡æ¯\n");
return;
}
else if (type==2)
{
printf("请è¾å
¥å¦çå§å:");
fflush(stdin);
gets(name);
while (p)
{
if (strcmp(p->student.name,name)==0)
{
printfnode(p);
return;
}
p=p->next;
}
printf("没ææ¾å°è¯¥%sçå¦çä¿¡æ¯\n",name);
}
return;
}
void printfList(LINK_LIST *head)
{
LINK_LIST *p;
p=head;
int i=0;
if (p==NULL)
{
printf("请å
å½å
¥å¦çä¿¡æ¯\n");
return;
}
while (p)
{
printf("\n第%dä½å¦ç:\n",++i);
printfnode(p);
p=p->next;
}
return;
}
int Insertnode(LINK_LIST *head)
{
LINK_LIST *p,*newnode=NULL;
p=head;
if (p==NULL)
{
printf("请å
å½å
¥å¦çä¿¡æ¯\n");
return 0;
}
newnode=Creatnode(head);
while (p->next)
{
p=p->next;
}
newnode->next=p->next;
p->next=newnode;
return 1;
}
int copystd_date(STD_DATE *dest,STD_DATE *source)
{
dest->num=source->num;
memset(dest->name,0,81);
memset(dest->address,0,256);
memset(dest->Email,0,256);
strcpy(dest->name,source->name);
strcpy(dest->address,source->address);
strcpy(dest->Email,source->Email);
dest->age=source->age;
dest->birthday.year=source->birthday.year;
dest->birthday.mon=source->birthday.mon;
dest->birthday.day=source->birthday.day;
dest->gender=source->gender;
dest->phonenumber=source->phonenumber;
return 1;
}
int Deletenode(LINK_LIST *head,LINK_LIST *delnode)
{
LINK_LIST *p,*del;
del=delnode;
p=delnode->next;
if (del==NULL)
{
printf("è¦å é¤çä¿¡æ¯ä¸åå¨\n");
return 0;
}
if (p==NULL)
{
p=head;
while (p->next!=delnode)
{
p=p->next;
}
p->next=NULL;
free(del);
del=NULL;
return 1;
}
del->next=p->next;
copystd_date(&del->student,&p->student);
free(p);
p=NULL;
return 1;
}
void Deletestd(LINK_LIST *head)
{
LINK_LIST *p;
int num=0;
int i=0;
p=head;
printf("请è¾å
¥è¦å é¤ç¬¬å 个å¦ç:");
scanf("%d",&num);
for (i=0;i<num-1;i++)
{
if (p==NULL)
{
break;
}
p=p->next;
}
if (p)
{
Deletenode(head,p);
printf("å é¤æå\n");
}
else
printf("没ææ¾å°è¯¥å¦ç");
return;
}
void title()
{
printf("*****************************************************\n");
printf("* å¦ ç 管 ç ç³» ç» *\n");
printf("* 请éæ©(1ï½6): *\n");
printf("* 1ãè¾å
¥å¦çä¿¡æ¯ *\n");
printf("* 2ãæ¥è¯¢ä¿¡æ¯ *\n");
printf("* 3ãæµè§å¦çä¿¡æ¯ *\n");
printf("* 4ãæå
¥å¦çä¿¡æ¯ *\n");
printf("* 5ãå é¤å¦çä¿¡æ¯ *\n");
printf("* 6ãéåºç³»ç» *\n");
printf("*****************************************************\n");
return ;
}
int main()
{
int num=0;
int findnum=0;
LINK_LIST *head=NULL;
LINK_LIST *p=NULL;
while (1)
{
title();
scanf("%d",&num);
switch(num)
{
case 1: head=CreatLink(); break;
case 2: findnode(head);break;
case 3: printfList(head);break;
case 4: Insertnode(head);break;
case 5: Deletestd(head); break;
case 6: goto end; break;
default:break;
}
printf("\n请æå车é®ç»§ç»\n");
fflush(stdin);
getchar();
system("cls");
}
end:
while (head)
{
p=head;
head=head->next;
free(p);
p=NULL;
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考