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

这是一个单链表程序,实现的是计算链表长度,能够编译,不报错,不警告,就是在运行时有错

#include <stdio.h>
#include <conio.h>
#define flag 0

typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}LNode,*LinkList;

LinkList creat_LinkList();
int length_LinkList(LinkList L);
void output(LinkList L);


main()
{
LinkList L;
int l;
L=creat_LinkList();
output(L);
l=length_LinkList(L);
printf("length\n",l);
getch();
}

LinkList creat_LinkList()
{
LinkList L=NULL;
LNode *s,*R=NULL;
int x;
scanf("%d",&x);
while(x!=flag)
{
s=(LNode *)malloc(sizeof(LNode));
L=L->next;
if(L==NULL)
L=s;
else
R->next=s;
R=s;
scanf("%d",&x);
}
if(R!=NULL)
R->next=NULL;
return L;
}

int length_LinkList(LinkList L) //不带头节点 计算长度
{
LNode *p=L;
int j;
if(p==NULL)
return 0;
j=1;
while(p->next)
{
p=p->next;
j++;
}
return j;

}

void output(LinkList L)
{
while(L!=NULL)
{
L=L->next;
printf("%d\t",L->data);
}
}




a8kAa4ix.png (25.62 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 表程序 单链 LinkList int node 
2006-10-25 10:25
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
问题出在creat_LinkList()中
你没有给L分配空间,又怎么可以使用L->next,他们一直都是空的.

倚天照海花无数,流水高山心自知。
2006-10-25 10:53
huangs415
Rank: 1
等 级:新手上路
帖 子:102
专家分:0
注 册:2006-10-14
收藏
得分:0 

太长了啊 好难的看啊

2006-10-25 11:12
hyl8729252
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-6-5
收藏
得分:0 
那要怎么分配
L=(LNode *)malloc(sizeof(LNode)); 时这样嘛?? 那加在什么地方

2006-10-25 11:59
hyl8729252
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-6-5
收藏
得分:0 
L=creat_LinkList();  我在main中调用了 请教,还要对L分配空间吗??

2006-10-25 12:01
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用hyl8729252在2006-10-25 11:59:54的发言:
那要怎么分配
L=(LNode *)malloc(sizeof(LNode)); 时这样嘛?? 那加在什么地方

在使用L前就得给它分配空间.


倚天照海花无数,流水高山心自知。
2006-10-25 12:10
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

给你几个创表的函数例子.
nodelink buildlink() /* 尾插法*/
{

datatype x;
nodelink head,s;
nodelink p2;
head=NULL;
p2=NULL;
printf("please input the link:");
scanf("%d",&x);
while(x!=0)
{
s=(nodelink)malloc(sizeof(node));
s->info=x;
if (head==NULL) head=s;
else p2->next=s;
p2=s;
scanf("%d",&x);
}
if(p2) p2->next=NULL;
return(head);
}

nodelink creatlink() /***头插法***/
{
nodelink head,p;
datatype x;
head=NULL;
printf("please input the link:");
scanf("%d",&x);
while(x!=0)
{
p=(nodelink)malloc(sizeof(node)) ;
p->info=x;
p->next=head;
head=p;
scanf("%d",&x);
}
return head;
}


/* 头插法建立带头节点的单链表*/
nodelink tcreathlink()
{
datatype x;
node *head,*s;
head=(node*)malloc(sizeof(node));
printf("please input the datas:");
scanf("%d",&x);
while(x)
{
s=(node*)malloc(sizeof(node));
s->info=x;
s->next=head->next;
head->next=s;
scanf("%d",&x);
}
return head;
}


nodelink tbuildhlink() /*带头节点的尾插法*/
{

datatype x;
node *head,*s;
node *p2;
head=(node *)malloc(sizeof(node));
p2=head;
printf("please input the datas:");
scanf("%d",&x);
while(x!=0)
{
s=(node *)malloc(sizeof(node));
s->info=x;
p2->next=s;
p2=s;
scanf("%d",&x);
}
if(p2) p2->next=NULL;
return(head);
}


倚天照海花无数,流水高山心自知。
2006-10-25 12:15
hyl8729252
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-6-5
收藏
得分:0 

恩。谢谢!


2006-10-25 12:55
快速回复:[求助]单链表程序,不报错但是运行有错
数据加载中...
 
   



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

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