结构指针

liuxin0534 2009-09-09 10:38:06
可编写一个建立链表的函数creat。程序如下:

#define NULL 0
#define TYPE struct stu
#define LEN sizeof (struct stu)
struct stu
{
 int num;
 int age;
 struct stu *next;
};
TYPE *creat(int n)
{
 struct stu *head,*pf,*pb;
 int i;
 for(i=0;i<n;i++)
 {
  pb=(TYPE*) malloc(LEN);
  printf("input Number and Age\n");
  scanf("%d%d",&pb->num,&pb->age);
  if(i==0)
   pf=head=pb;
  else pf->next=pb;
  pb->next=NULL;
  pf=pb;
 }
 return(head);
}
当执行pf=head=pb;pf->next指向哪里??
...全文
130 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
blns 2009-09-11
  • 打赏
  • 举报
回复
还是一个随机值,当执行到下一条语句的时候才进行了赋值
liuxin0534 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 niimp2 的回复:]
//这样你就明白了
C/C++ code
 if(i==0)
 {
pf=head=pb;
}
 else
{
pf->next=pb;
}
 pb->next=NULL;
 pf=pb;
[/Quote]


然后执行pf->next=pb后,链表就连接起来了吗??pf->next本来与老的pb->next一样指为NULL,这里又指向新的pb,怎么链表就连接起来??
buptzwp 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liuxin0534 的回复:]
引用 4 楼 niimp2 的回复:
//这样你就明白了
C/C++ code
 if(i==0)
 {
      pf=head=pb;
  }
 else
  {
      pf->next=pb;
  }
 pb->next=NULL;
 pf=pb;



然后执行pf->next=pb后,链表就连接起来了吗??pf->next本来与老的pb->next一样指为NULL,这里又指向新的pb,怎么链表就连接起来??
[/Quote]
等于NULL后,在给pf->next赋值,不就多了一个节点了嘛。然后pf=pb。然后pf就就指向了刚才新加的节点。这样不就连起来了。
ominnc 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 niimp2 的回复:]
//这样你就明白了
C/C++ code
 if(i==0)
 {
pf=head=pb; //
}
 else
{
pf->next=pb;
}
 pb->next=NULL;
 pf=pb;
[/Quote]
若是只是说执行完注释这句,pf->next 指向的是为初始化的指针,为任意值,和编译器有关。
dbkite 2009-09-10
  • 打赏
  • 举报
回复
楼上的就对了 你画画图看看 可以连接起来的
niimp2 2009-09-09
  • 打赏
  • 举报
回复
//这样你就明白了

 if(i==0)
 {
pf=head=pb;
}
 else
{
pf->next=pb;
}
 pb->next=NULL;
 pf=pb;
liuxin0534 2009-09-09
  • 打赏
  • 举报
回复
然后执行pf->next=pb后,链表就连接起来了吗??pf->next本来与老的pb->next一样指为随机地址,这里又指向新的pb,怎么链表就连接起来??
hrlhrl0 2009-09-09
  • 打赏
  • 举报
回复
随意的一个地址?
acdbxzyw 2009-09-09
  • 打赏
  • 举报
回复
当执行pf=head=pb;pf->next指向哪里??
此时pf->next就是pb->next, 也就NULL.

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧