满意答案
shisanying
2016.01.13
采纳率:45% 等级:10
已帮助:725人
struct human
{
char sex[5];
char name[10];
int age;
struct human *next
}
首先如果已经建好链表的话,就会有一个头指针,假设是 head
那么 我只写一部分代码了,相信你学到链表的话其他部分应该不会难倒你
int i;
char s[10]; //假设使用姓名来查找
printf("input a name");
gets(s); //输入要查找的人的姓名
struct human *p//不能直接对头指针进行操作,要不然整个链表就没了
for(p=head;p!=NULL;p=p->next) //遍历的思想
{
i=strcmp(p->sex,"man"); //比较两个字符串 当sex 为"man" 时,i=0
if(i==0)
j=strcmp(p->name,s);
if(j==0)
{
printf("%s\n%s\n%d\n",p->name,p->name,p->age);
/*输出所有信息,当然如果你的链表信息比较多点的话,会麻烦点,也可以用多个printf*/
break; //结束查找
}
}
//当然,如果你想查找多个人的话可以多一个循环 如下
char c='y';
while(c!='n')
{
for(p=head;p!=NULL;p=p->next) //遍历的思想
{
i=strcmp(p->sex,"man");
/*比较两个字符串 当sex 为"man" 时,i=0,
记得最开头要include,要不然无法用strcmp函数*/
if(i==0)
j=strcmp(p->name,s);
if(j==0)
{
printf("%s\n%s\n%d\n",p->name,p->name,p->age);
/*输出所有信息,当然如果你的链表信息比较多点的话,会麻烦点,也可以用多个printf*/
break; //结束查找
}
}
printf("input y to conitue search or n to end\n"); // 提示是否查找另一个人;
scanf("%c",&c);
}
00分享举报