| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 526 人关注过本帖
标题:C语言链表查找问题?请高手帮我找下错误在哪里,要怎么改?
只看楼主 加入收藏
hwf214685147
Rank: 2
等 级:论坛游民
帖 子:70
专家分:94
注 册:2011-9-14
结帖率:62.5%
收藏
 问题点数:0 回复次数:6 
C语言链表查找问题?请高手帮我找下错误在哪里,要怎么改?
/* Note:Your choice is C IDE */
#include "stdio.h"
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#define N    10
typedef struct node
{
    char name[20];
    struct node *link;   
}stud;

stud *creat(int n)
{
    stud *p,*h,*s;
    int i;
    if((h=(stud *)(malloc(sizeof(stud))))==NULL)
    {
        printf("不能分配内存空间");
        exit(0);   
    }
    h->name[0]='\0';
    h->link=NULL;
    p=h;
    for(i=0;i<n;i++)
    {
        if((s=(stud *)(malloc(sizeof(stud))))==NULL)
        {
            printf("不能分配内存空间");
            exit(0);   
        }
        p->link=s;
        printf("请输入第%d个人的姓名",i+1);
        scanf("%s",s->name);
        s->link=NULL;
        p=s;
    }
    return(h);
}
stud * search(stud *h,char *x) /*查找链表的函数,其中h指针是链表的表头指针,x指针是要查找的人的姓名*/
{
    stud *p; /*当前指针,指向要与所查找的姓名比较的结点*/
    char *y; /*保存结点数据域内姓名的指针*/
    p=h->link;
    while(p!=NULL)
    {
        y=p->name;
        if(strcmp(y,x)==0) /*把数据域里的姓名与所要查找的姓名比较,若相同则返回0,即条件成立*/
        return(p); /*返回与所要查找结点的地址*/
        else p=p->link;
    }
    if(p==NULL)
    printf("没有查找到该数据!");
}
main()
{
    int number;
    char fullname[20];
    stud *head,*searchpoint; /*head是表头指针,searchpoint是保存符合条件的结点地址的指针*/
    number=N;
    head=creat(number);
    printf("请输入你要查找的人的姓名:");
    scanf("%s",fullname);
    searchpoint=search(head,fullname); /*调用查找函数,并把结果赋给searchpoint指针*/
}

错误提示: warning C4715: 'search' : not all control paths return a value
搜索更多相关主题的帖子: C语言 
2011-09-15 17:36
DestinyOooO
Rank: 2
等 级:论坛游民
帖 子:16
专家分:17
注 册:2011-9-15
收藏
得分:0 
你的search函数在没有找到数据的时候 没有返回值
2011-09-15 18:01
hwf214685147
Rank: 2
等 级:论坛游民
帖 子:70
专家分:94
注 册:2011-9-14
收藏
得分:0 
那要怎么改?
2011-09-15 19:28
wubaogang
Rank: 2
等 级:论坛游民
帖 子:8
专家分:11
注 册:2011-9-8
收藏
得分:0 
2楼的说法是对的,还是return p,然后再main中作一下if判断
if(searchpoint==NULL)
  printf("不能找到相关名字的信息!");
2011-09-19 14:34
jj7412530
Rank: 2
等 级:论坛游民
帖 子:19
专家分:40
注 册:2011-9-20
收藏
得分:0 
stud * search(stud *h,char *x)没有返回值么~~~
2011-09-20 00:35
yucwei
Rank: 2
等 级:论坛游民
帖 子:25
专家分:46
注 册:2007-10-10
收藏
得分:0 
我用VC编辑通过了。没问题的。
2011-09-20 08:06
yucwei
Rank: 2
等 级:论坛游民
帖 子:25
专家分:46
注 册:2007-10-10
收藏
得分:0 
/* Note:Your choice is C IDE */
#include "stdio.h"
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#define N    10
typedef struct node
{
    char name[20];
    struct node *link;   
}stud;

stud *creat(int n)
{
    stud *p,*h,*s;
    int i;
    if((h=(stud *)(malloc(sizeof(stud))))==NULL)
    {
        printf("不能分配内存空间");
        exit(0);   
    }
    h->name[0]='\0';
    h->link=NULL;
    p=h;
    for(i=0;i<n;i++)
    {
        if((s=(stud *)(malloc(sizeof(stud))))==NULL)
        {
            printf("不能分配内存空间");
            exit(0);   
        }
        p->link=s;
        printf("请输入第%d个人的姓名",i+1);
        scanf("%s",s->name);
        s->link=NULL;
        p=s;
    }
    return(h);
}
stud * search(stud *h,char *x) /*查找链表的函数,其中h指针是链表的表头指针,x指针是要查找的人的姓名*/
{
    stud *p; /*当前指针,指向要与所查找的姓名比较的结点*/
    char *y; /*保存结点数据域内姓名的指针*/
    p=h->link;
    while(p!=NULL)
    {
        y=p->name;
        if(strcmp(y,x)==0) /*把数据域里的姓名与所要查找的姓名比较,若相同则返回0,即条件成立*/
        return(p); /*返回与所要查找结点的地址*/
        else p=p->link;
    }
    if(p==NULL)
    printf("没有查找到该数据!");
}
main()
{
    int number;
    char fullname[20];
    stud *head,*searchpoint; /*head是表头指针,searchpoint是保存符合条件的结点地址的指针*/
    number=N;
    head=creat(number);
    printf("请输入你要查找的人的姓名:");
    scanf("%s",fullname);
    searchpoint=search(head,fullname); /*调用查找函数,并把结果赋给searchpoint指针*/
    printf("你要查找的人的姓名是:%s",searchpoint->name);
}
2011-09-20 08:10
快速回复:C语言链表查找问题?请高手帮我找下错误在哪里,要怎么改?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012844 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved