【发布时间】:2014-03-23 00:44:28
【问题描述】:
我正在为课堂工作的项目遇到问题。我在递归打印spheres 的链接列表时特别遇到问题。每当程序在特定部分上运行时:
ss=ss->next;
有一个Segmentation fault: 11。问题可能是什么?
(注意:我已经包含了必要的structssphereandsphere_list, and left outrgbandvec`,以免混淆代码。)
typedef struct sphere {
vec *center;
double radius;
rgb *color;
} sphere;
typedef struct sphere_list sphere_list;
/* convention: NULL is the empty sphere list */
struct sphere_list {
sphere *s;
sphere_list *next;
};
void sl_print(sphere_list *ss)
{
if(ss==NULL)
printf("SPHERE LIST EMPTY\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("SPHERE LIST:\n");
int i=1;
while(ss->s!=NULL){
printf("\t%d ", i);
sphere_print(ss->s);
if(ss->next==NULL){
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
return;
}
ss=ss->next;
i++;
}
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
return;
}
【问题讨论】:
-
if(ss==NULL)。有没有对应的else??
标签: c while-loop linked-list segmentation-fault dynamic-memory-allocation