两个顺序查找的例子,第一个只能输入姓名查找,第二个可以输入其它信息查找。做的很粗糙。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define num 4
#include <stdlib.h>
#include <string.h>
#define num 4
struct chain
{
char name[20];
char city[20];
char age[20];
char sex[10];
char job[20];
struct chain *next;
};
{
char name[20];
char city[20];
char age[20];
char sex[10];
char job[20];
struct chain *next;
};
struct chain datas[num]=
{
"sun","Weifang","Male","24","student",NULL,
"Tom","Beijing","Male","31","doctor",NULL,
"Marry","Shanghai","Female","19","techer",NULL,
"Willing","Tianjing","Female","21","worker",NULL
};
{
"sun","Weifang","Male","24","student",NULL,
"Tom","Beijing","Male","31","doctor",NULL,
"Marry","Shanghai","Female","19","techer",NULL,
"Willing","Tianjing","Female","21","worker",NULL
};
void print_data(struct chain *p);
struct chain *squlesearch(struct chain *head,char name[]);
struct chain *create();
struct chain *squlesearch(struct chain *head,char name[]);
struct chain *create();
void main()
{
struct chain *head,*p;
char name[30];
head=create();
printf("input what you want to find!!\n");
scanf("%s",name);
p=squlesearch(head,name);
print_data(p);
}
{
struct chain *head,*p;
char name[30];
head=create();
printf("input what you want to find!!\n");
scanf("%s",name);
p=squlesearch(head,name);
print_data(p);
}
struct chain *create()
{
int i;
struct chain *head,*tail,*p;
head=tail=NULL;
for(i=0;i<num;i++)
{
strcpy(p->name,datas[i].name);
strcpy(p->city,datas[i].city);
strcpy(p->age,datas[i].age);
strcpy(p->sex,datas[i].sex);
strcpy(p->job,datas[i].job);
if(head==NULL)
head=tail=p;
else
{
p=tail->next;
tail=tail->next;
}
}
return head;
}
{
int i;
struct chain *head,*tail,*p;
head=tail=NULL;
for(i=0;i<num;i++)
{
strcpy(p->name,datas[i].name);
strcpy(p->city,datas[i].city);
strcpy(p->age,datas[i].age);
strcpy(p->sex,datas[i].sex);
strcpy(p->job,datas[i].job);
if(head==NULL)
head=tail=p;
else
{
p=tail->next;
tail=tail->next;
}
}
return head;
}
struct chain *squlesearch(struct chain *head,char name[])
{
struct chain *temp;
temp=head;
for(;temp!=NULL;temp=temp->next)
{
if(strcmp(temp->name,name)==0);
break;
}
if(temp==NULL)
printf("can not find it!!\n");
return temp;
}
{
struct chain *temp;
temp=head;
for(;temp!=NULL;temp=temp->next)
{
if(strcmp(temp->name,name)==0);
break;
}
if(temp==NULL)
printf("can not find it!!\n");
return temp;
}
void print_data(struct chain *p)
{
if(p==NULL)
return;
printf("%s\n",p->name);
printf("%s\n",p->city);
printf("%s\n",p->sex);
printf("%s\n",p->age);
printf("%s\n",p->job);
}
{
if(p==NULL)
return;
printf("%s\n",p->name);
printf("%s\n",p->city);
printf("%s\n",p->sex);
printf("%s\n",p->age);
printf("%s\n",p->job);
}
--------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define num 4
#include <stdlib.h>
#include <string.h>
#define num 4
struct chain
{
char name[20];
char city[20];
char age[20];
char sex[10];
char job[20];
struct chain *next;
};
{
char name[20];
char city[20];
char age[20];
char sex[10];
char job[20];
struct chain *next;
};
struct chain datas[num]=
{
"sun","Weifang","Male","24","student",NULL,
"tom","Beijing","Male","31","doctor",NULL,
"marry","Shanghai","Female","19","techer",NULL,
"Willing","Tianjing","Female","21","worker",NULL
};
{
"sun","Weifang","Male","24","student",NULL,
"tom","Beijing","Male","31","doctor",NULL,
"marry","Shanghai","Female","19","techer",NULL,
"Willing","Tianjing","Female","21","worker",NULL
};
void print_data(struct chain *p);
int squlesearch(struct chain *head,char name[]);
struct chain *create();
int squlesearch(struct chain *head,char name[]);
struct chain *create();
void main()
{
int p;
int i;
struct chain *head;
char name[30];
head=create();
printf("input what you want to find!!\n");
scanf("%s",name);
printf("**********************************\n");
for(i=0;i<num;i++)
{
p=squlesearch(head,name);
if(p==1)
print_data(head);
printf("-----------------------\n");
head=head->next;
}
{
int p;
int i;
struct chain *head;
char name[30];
head=create();
printf("input what you want to find!!\n");
scanf("%s",name);
printf("**********************************\n");
for(i=0;i<num;i++)
{
p=squlesearch(head,name);
if(p==1)
print_data(head);
printf("-----------------------\n");
head=head->next;
}
}
struct chain *create()
{
int i;
struct chain *head,*tail,*p;
head=tail=NULL;
printf("%s",datas[0].name);
for(i=0;i<num;i++)
{
p=(struct chain *)malloc(sizeof(struct chain));
strcpy(p->name,datas[i].name);
strcpy(p->city,datas[i].city);
strcpy(p->age,datas[i].age);
strcpy(p->sex,datas[i].sex);
strcpy(p->job,datas[i].job);
p->next=NULL;
if(head==NULL)
{
head=tail=p;
}
else
{
tail->next=p;
tail=tail->next;
}
}
return head;
}
int squlesearch(struct chain *head,char name[])
{
{
if(strcmp(head->name,name)==0)
return 1;
else if(strcmp(head->city,name)==0)
return 1;
else if(strcmp(head->age,name)==0)
return 1;
else if(strcmp(head->sex,name)==0)
return 1;
else if(strcmp(head->job,name)==0)
return 1;
else
return 2;
}
return 1;
else if(strcmp(head->city,name)==0)
return 1;
else if(strcmp(head->age,name)==0)
return 1;
else if(strcmp(head->sex,name)==0)
return 1;
else if(strcmp(head->job,name)==0)
return 1;
else
return 2;
}
void print_data(struct chain *p)
{
if(p==NULL)
return;
printf("%s\n",p->name);
printf("%s\n",p->city);
printf("%s\n",p->sex);
printf("%s\n",p->age);
printf("%s\n",p->job);
}
{
if(p==NULL)
return;
printf("%s\n",p->name);
printf("%s\n",p->city);
printf("%s\n",p->sex);
printf("%s\n",p->age);
printf("%s\n",p->job);
}
转载于:https://blog.51cto.com/240420643/92784