/*大二实践周所作,
时间:2017.9,11
电话簿管理系统
*/
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define NULL 0
typedef struct lianxiren{
char job[30];
char number[20];
char name[10];
char email[30];
struct lianxiren*next;
}lianxiren;
#define LEN sizeof(lianxiren)
lianxiren* creat_list()
{
lianxiren *head,*p1,*p2;
char name[10];int n=0;
head=NULL;
p1=(lianxiren *)malloc(LEN);
p2=p1;
printf("请输入姓名(姓名为0时停止创建):");
gets(name);
if(strcmp(name,"0")==0)return 0;
else {
strcpy(p1->name,name);
printf("请输入电话号码:");gets(p1->number);
printf("请输入工作单位:");gets(p1->job);
printf("请输入E-mail:");gets(p1->email);
}
while(1)
{
n++;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
printf("请输入姓名(姓名为0时停止创建):");
gets(name);
if(strcmp(name,"0")==0)break;
else{
p1=(lianxiren*)malloc(LEN);
strcpy(p1->name,name);
printf("请输入电话号码:");gets(p1->number);
printf("请输入工作单位:");gets(p1->job);
printf("请输入E-mail:");gets(p1->email);}
}p2->next=NULL;
return head;
}//链表创建函数
lianxiren* shifang_list(lianxiren*head)
{
lianxiren*p1;
for(;head!=NULL;)
{
p1=head;
head=head->next;
free(p1);
}
return head;
}//释放链表函数
void print_list(lianxiren*head)
{
void caidan();
int n=0;
printf("现在通讯录中有如下成员:");
while(head!=NULL)
{
printf("\n名字:");puts(head->name);
printf("\n电话号码:");puts(head->number);
printf("\n工作单位:");puts(head->job);
printf("\nE-mail:");puts(head->email);
putchar('\n');
head=head->next;n++;
if(n%8==0){
printf("按回车键显示下一页");
getchar();
system("cls");
caidan();
}
}
printf("总共%d个联系人\n",n);
}//打印链表函数
int length(lianxiren*head)
{
int n = 0;
lianxiren *p;
p = head;
while(p != NULL)
{
p = p->next;
n++;
}
return n;
}
void paixu1(lianxiren*head)
{
void caidan();
int n=length(head);
int i,j;
lianxiren temp,*p;
p=head;
lianxiren a[100];
for(i=1;i<=n;i++)
{
strcpy(a[i].name,p->name);
strcpy(a[i].number,p->number);
strcpy(a[i].job,p->job);
strcpy(a[i].email,p->email);
p=p->next;
}
for(i=1;i<=n-1;i++)
{
for(j=1;j<=n-i;j++)
{if(strcmp(a