| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 420 人关注过本帖
标题:请师父们帮忙看看
只看楼主 加入收藏
mandyhx
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-10-5
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
请师父们帮忙看看
#include "Stdio.h"
#include "Conio.h"
#include "string.h"

typedef struct node     /*定义一个结构体*/
{
    char name[50];
    struct node* next;
}Name;

Name *n_node(Name *head)    /*创建单链表*/
{
    Name *p,*s;
    int x,n;/* x为一个结点*/
    if((head = (Name *)malloc(sizeof(Name))) == NULL) /*为头指针申请一个空间*/
    {
        printf("No set up accomplish\n");
    }
    head->name[0] = '\0';
    head->next = NULL;
    p = head;
    /*在创建一个新节点 s */
    if((s = (Name *)malloc(sizeof(Name))) == NULL)
    {
        printf("No set up accomplish!");
    }

    p->next = s;
    s->next = p->next;
    p = s;
    printf("Please input your want set up node:");
    scanf("%d",&x);
    for(n=0;n<x;n++)
    {
        printf("Please input your name[ 50string nei]: ");
        scanf("%s",s->name);
    }

return head;

}
Name *find_node(Name *head,char *sname)   /*查找一个名字*/
{
    Name *p;
    char *name;
    p = head;


    while( p != NULL )
    {
        name = p->name;
        if(strcmp(name,sname) == 0)
        {
            printf("Find le");
            return p;
        }
         else
            p = p->next;
    }

        if(p == NULL)
        {
            printf("No find ");
            return NULL;
        }

}

int main()
{
    Name *head;
    char ch[50];
    n_node(head);
    printf("Please input your want find NAME:");
    scanf("%s",ch);
    find_node(head,ch);
    getch();
    return 0;

}

    我输出一个字符串 进行查找  输出正确和错误 结果都 是No find
试了好长时间 得不到结果 所有请大家帮忙看看
多多指点 谢谢 先辈们;


搜索更多相关主题的帖子: 师父 
2009-11-04 20:38
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:20 
#include "Stdio.h"
#include "Conio.h"
#include "string.h"

typedef struct node     /*定义一个结构体*/
{
    char name[50];
    struct node* next;
}Name;

Name *n_node(Name *head)   
{
    Name *p,*s;
    int x,n;/* x为一个结点*/
    if((head = (Name *)malloc(sizeof(Name))) == NULL)
    {
        printf("No set up accomplish\n");
    }
    head->name[0] = '\0';
    head->next = NULL;                                         //这里改一下,
    p = head;
   
    if((s = (Name *)malloc(sizeof(Name))) == NULL)
    {
        printf("No set up accomplish!");
    }

    p->next = s;
    s->next = NULL;
    p = s;
    printf("Please input your want set up node:");
    scanf("%d",&x);
    for(n=0;n<x;n++)
    {
        printf("Please input your name[ 50string nei]: ");
        scanf("%s",s->name);
        s=s->next;                                                   ////////指针后移指向下一个元素
    }
     s->next=NULL;
return head;

}
Name *find_node(Name *head,char *sname)   /
{
    Name *p;
    char *name;
    p = head;


    while( p != NULL )
    {
         name = p->next->name;              //p指向第一个节点
        if(strcmp(name,sname) == 0)
        {
            printf("Find le");
            return p;
        }
         else
            p = p->next;
    }

        if(p == NULL)
        {
            printf("No find ");
            return NULL;
        }

}

int main()
{
    Name *head;
    char ch[50];
    head=n_node(head);                         //   让head接收函数返回的指针,即链表首地址。
    printf("Please input your want find NAME:");
    scanf("%s",ch);
    find_node(head,ch);
    getch();
    return 0;

}


离恨恰如春草,更行更远还生。
2009-11-04 20:59
mandyhx
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-10-5
收藏
得分:0 
神了  师父 你太厉害了 受益匪浅
2009-11-04 21:28
hwshtongxin
Rank: 1
等 级:新手上路
帖 子:35
专家分:4
注 册:2009-1-6
收藏
得分:0 
///////////主要是有两个问题(本人认为),一是函数参数是指针变量时,形参和是实参的一个临时指针变量,如果形参指向一个新的(通过malloc获得的)内存,那么对形参的操作不
//会影响到实参(指针变量),可以通过二次指针(指针引用)来克服,二是这里是否是要建立一个单链表,(如果是)那么你建立单链表有问题,可参照你自己的和下面
//void n_node(Name *head)函数内部实现方法。下面的程序运行没有什么问题。
#include <stdio.h>
#include "Conio.h"
#include "string.h"

typedef struct node     
{
    char name[50];
    struct node* next;
}Name,*ptrname;

void n_node( Name** head)   
{
    Name *p,*s;
    int x,n;
    if( (*head = (Name *)malloc( sizeof(Name) ) ) == NULL )
    {
        printf("No set up accomplish\n");
    }
    (*head)->name[0] = '\0';
    (*head)->next = NULL;
    p = (*head);  
    ////////////////////////////////////
    printf("Please input your want set up node:");
    scanf("%d",&x);
   /////////////////////////////////
    for(n=0;n<x;n++)
    {  
    if((s = (Name *)malloc(sizeof(Name))) == NULL)
    {
        printf("No set up accomplish!");
    }

    p->next = s;
    s->next =NULL;
    p = s;

    printf("Please input your name[ 50string nei]: ");
    scanf("%s",s->name);

    }
    return 0;

}
int  find_node(Name **head,char *sname)  
{
    Name *p;
    char *name;
    p =(*head);


    while( p != NULL )
    {
        name = p->name;
        if(strcmp(name,sname) == 0)
        {
            printf("Find le");
            return 1;
        }
         else
         {
             p = p->next;
         }
    }

        if(p == NULL)
        {
            printf("No find ");
            return 0;
        }

}

int main()
{
    Name *head;
    char ch[50];
    n_node(&head);
    printf("Please input your want find NAME:");
    scanf("%s",ch);
    printf(" \t%d\n", find_node(&head,ch) );
///////////////////
    getch();
    return 0;

}
2009-11-04 23:44
快速回复:请师父们帮忙看看
数据加载中...
 
   



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

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