| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 486 人关注过本帖
标题:[求助] 链表问题
只看楼主 加入收藏
lujunhuan
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-11-30
收藏
 问题点数:0 回复次数:6 
[求助] 链表问题

创建一个链表并输入2--20数据,然后输出。
以下程序为何不能得到正确结果。

#include "stdio.h"
main ()
{
struct sushu
{
int num;
struct sushu *next;
};

struct sushu *head, *p;
int i;

for (i=2; i<=20; i++)
{
p= (struct sushu *) malloc (sizeof (struct sushu));
p->num=i;
if (i==2)
{
head=p;
p++;
}
else
{
(--p)->next=p;
p++;
}
}

for (i=2; i<=20; i++)
{
printf ("%d\t", head->num);
head++;
}

getch ();
}

搜索更多相关主题的帖子: 链表 
2006-12-15 14:34
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 

malloc函数好像是没有声明吧!在stdlib.h这个文件中!链表只看了一点点!只知道这些!


该学习了。。。
2006-12-15 14:40
longerhe
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-10-10
收藏
得分:0 

#include <stdio.h>
#include <stdlib.h>
int main ()
{
struct sushu
{
int num;
struct sushu *next;
};

struct sushu *head, *p,*r;
int i;
head=NULL;
r=NULL;
for (i=2; i<=20; i++)
{
p= (struct sushu *)malloc (sizeof (struct sushu));
p->num=i;
if (!head)
head=p;
else
r->next=p;
r=p;
r->next=NULL;

}

for (i=2; i<=20; i++)
{
printf ("%d\t", head->num);
head=head->next;
}
getchar();
return 0;
}

2006-12-15 14:47
lujunhuan
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-11-30
收藏
得分:0 

运行正确了,谢谢!

2006-12-15 15:10
lujunhuan
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-11-30
收藏
得分:0 
还没有弄明白。
2006-12-15 15:13
caiqiufu
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-12-14
收藏
得分:0 
if (!head)
head=p;
else
r->next=p;
r=p;
r->next=NULL;
没有明白,开始r应该是head接点吗??
2006-12-16 00:37
longerhe
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2006-10-10
收藏
得分:0 
head是头指针,r是尾指针...
当头指针没有连接到任何结点时,即第一次插入结点时,就用头指针指向那个结点就行了...head=p;
当头指针已经指向结点时,即第二次及以后的插入时,就用尾指针指向那个结点就行了...r->next=p;
总的来说,尾指针还是要指向刚插入的那个结点...r=p;
最后设置尾指针的链域指向空....r->next=NULL;
if(!head)\\头指针空的时候
head=p;
else
r->next=p;
\\然后...............
r=p;
r->next=NULL;

就是这样理解了....如果你没有加入空白的头结点,就要顾及以上问题,但如果你设置了一个空白的头结点,而且head始终指向它的话,那么第一次插入结点和第二次及以后插入结点都一样了,都直接插入尾指针后面,然后设置尾指针指向它,就不会出现以上那些问题了....这些都是所谓的“尾插法”.

2006-12-16 01:27
快速回复:[求助] 链表问题
数据加载中...
 
   



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

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