关于 C语言链表(linklist)

一个很基础的程序:#defineNULL0#defineTYPEstructstu#defineLENsizeof(structstu)structstu{intnum;... 一个很基础的程序:
#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=pb是什么意思,
pb->next=null是在干什么,
每次循环时malloc的意思是重新分配一个pb的意思么?
还是不太明白,每个结点的概念是什么呢?结点存在在哪?
pb,head和pf都是指向结点的指针,不是实际存储数据的结点,可数据究竟储存到了什么地方?
如果这样可以储存n个数据的话,如何把保存在结点的数据输出呢?
展开
 我来答
a4321559
2008-12-07 · TA获得超过521个赞
知道小有建树答主
回答量:236
采纳率:0%
帮助的人:290万
展开全部
好象不是循环链表吧.....
pf=pb//这句是看你是否真正懂了整个创建过程,pb是指像当前最新创建的结点,而pf则指向上一个结点 每次从开始循环 pb指向新创建的结点 之后利用pf->next=pb来挂结点 而最后 pf指向pb 准备迎接下一个结点 当下一个结点来时
pb又指向新的结点 而pf 指向刚刚创建的结点 利用 pf->next=pb把pb挂在pf后面

pb->next=null 是在把新的结点的next域指定为空 也是一个初始化

malloc 是申请一块内存空间来给新的结点 如果不去申请的话 新的结点放哪? 我们创建的东西都是凭空想象的 但是最后都要写到计算机里面 分配一块内存空间大概就是这个意思
ylhsz
2008-12-07 · 超过19用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:75.4万
展开全部
pf=pb 让pf指向最后一个结构体,方便下一次操作

pb->next=null是pb的下一个节点置空

分配一个堆空间,作存储用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
langjiwuhen200
2008-12-07 · 超过33用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:82.4万
展开全部
i==0时,pf是个空链表,这时pf=head=pb;就是pb指向这个链表的头节点,因为这时的链表下个单元为空
pb->next=null是把带头节点的循环单链表设置成首尾相连的形式,从而达到循环的目的。
malloc函数用于向系统动态申请LEN个字节的内存单元空间,函数返回值为所申请的内存空间首地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式