| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 685 人关注过本帖
标题:求助:建立动态单向链表的问题
只看楼主 加入收藏
ar7043
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-8-15
收藏
 问题点数:0 回复次数:2 
求助:建立动态单向链表的问题
1,struct student{
2,int num;
3,float score;
4,struct student *next;}
5,struct *p1,*p2;
6,p1=p2=(struct student*)malloc(sizeof(struct student);
7,head=NULL
8,while(p1->num!=0)
9,{n=n+1;
10,if(n==1)head=p1;
11,else p2->next=p1;
12,p2=p1;
13,p1=(struct student*)malloc(sizeof(struct student);
这是一个简略的建立单项链表的语句.在第6行申请了一个空间使p1,p2指向它.第10行使head也指向这个空间.
接着p2->next=p1.这有个疑问?由于还没有申请新的空间11行的语句不就把链表做成了个循环链即链表的尾又指向链表的头.是不是应该把第13行加到11行else后面?


搜索更多相关主题的帖子: 链表 动态 
2006-10-26 11:06
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 

没有错误啊

第一次循环 n=1 执行head=p1 即p1和head指向一个节点 并且为空
p2=p1 即p2和p1和head指向一个节点 都为NULL p1开辟一个空间

第二次循环 n=2 执行p2->next=p1 即把新开辟的空间连接到p2 也就是head的后边
p2=p1 让p2指针指向p1 ,p1继续开辟空间 ,此次循环结束后, 链表为head->p2

第三次循环 n=3 执行p2->next=p1 即把新开辟的空间连接到p2
p2=p1 让p2指针指向p1 ,p1继续开辟空间 ,此次循环结束后, 链表为head->p2->p2'

... ...

其实这里的p2起到连接作用,循环一次它往后走一步... 而p1是赋值开辟空间的
当然整个循环结束后要用这语句完成整个链表的 p2->next=NULL


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-26 11:45
ar7043
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-8-15
收藏
得分:0 
哦!不好意思.书看多了,发帖时脑子晕了.

2006-10-26 22:14
快速回复:求助:建立动态单向链表的问题
数据加载中...
 
   



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

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