| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 457 人关注过本帖, 1 人收藏
标题:有关单向链表的建立问题,恳求高手解惑。
只看楼主 加入收藏
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
结帖率:100%
收藏(1)
已结贴  问题点数:30 回复次数:7 
有关单向链表的建立问题,恳求高手解惑。
typedef struct node
{
  char name[10];
  int age;
  char sex[5];
  char telephonenumber[20];
  char adress[20];
  struct node *link;
}STU;
STU *creat_list(int n)
{
  STU *h,*p,*s;
  int i;
  if(h=(STU *)malloc(sizeof(STU))==NULL)
  {
   printf("Don't have enough space!\n");
   exit(0);
  }
  h->name[0]='\0';
  h->age=0;
  h->sex[0]='\0';
  h->telephonenumber[0]='\0';
  h->adress[0]='\0';
  h->link=NULL;
  p=h;
  for(i=0;i<n;i++)
  {
   if(s=(STU *)malloc(sizeof(STU))==NULL)
   {
    printf("Don't have enough space!\n");
    exit(0);
   }
   p->link=s;
   printf("Please input NO.%d student's name:",i+1);
   scanf("%s",s->name);
   printf("Please input NO.%d student's age:",i+1);
   scanf("%d",&s->age);
   printf("Please input NO.%d student's sex(boy/girl):",i+1);
   scanf("%s",s->sex);
   printf("Please input NO.%d student's telephone number:",i+1);
   scanf("%s",s->telephonenumber);
   printf("Please input NO.%d student's adress:",i+1);
   scanf("%s",s->adress);
   printf("\n");
   s->link=NULL;
   p=s;
  }
  return h;
}
为什么STU *creat_list(int n)返回值是NULL,而不是第一个结点的地址呢?
搜索更多相关主题的帖子: name 
2012-01-27 20:54
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:30 
typedef struct node
 {
   char name[10];
   int age;
   char sex[5];
   char telephonenumber[20];
   char adress[20];
   struct node *link;
 }STU;
 STU *creat_list(int n)
 {
   STU *h,*p,*s;
   int i;
   if(h=(STU *)malloc(sizeof(STU))==NULL)//if((h=(STU *)malloc(sizeof(STU))) == NULL)
   {
    printf("Don't have enough space!\n");
    exit(0);
   }
   h->name[0]='\0';
   h->age=0;
   h->sex[0]='\0';
   h->telephonenumber[0]='\0';
   h->adress[0]='\0';
   h->link=NULL;
   p=h;
   for(i=0;i<n;i++)
   {
    if(s=(STU *)malloc(sizeof(STU))==NULL)//同上
    {
     printf("Don't have enough space!\n");
     exit(0);
    }
    p->link=s;
    printf("Please input NO.%d student's name:",i+1);
    scanf("%s",s->name);
    printf("Please input NO.%d student's age:",i+1);
    scanf("%d",&s->age);
    printf("Please input NO.%d student's sex(boy/girl):",i+1);
    scanf("%s",s->sex);
    printf("Please input NO.%d student's telephone number:",i+1);
    scanf("%s",s->telephonenumber);
    printf("Please input NO.%d student's adress:",i+1);
    scanf("%s",s->adress);
    printf("\n");
    s->link=NULL;
    p->link = s;
    p=s;
   }
   return h;
 }
 

重剑无锋,大巧不工
2012-01-27 21:12
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:0 
嗯,谢谢版主,多谢了。
2012-01-27 21:20
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
不好意思,没看见p->link = s这句上面已经有了,我加的请删去。虽然这样的先后关系不影响程序逻辑,但新结点的初始化与插入过程尽量不要掺在一起,分开写更符合思维逻辑。

重剑无锋,大巧不工
2012-01-27 21:27
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
楼主想明白了吗?

总有那身价贱的人给作业贴回复完整的代码
2012-01-27 21:31
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:0 
回复 2楼 beyondyf
return h;是否改为 return h->link;更好啊?
2012-01-27 21:57
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:0 
回复 4楼 beyondyf
我知道的。谢谢啊。
2012-01-27 21:59
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:0 
回复 5楼 embed_xuel
明白的,不过  想请教把return h;改为return h->link;是否更好啊? 因为我要的是存入数据节点的地址,而不是初始化时h节点的地址。
2012-01-27 22:02
快速回复:有关单向链表的建立问题,恳求高手解惑。
数据加载中...
 
   



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

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