我遇到了我正在爲類工作的項目的問題。我特別在遞歸地打印spheres
的鏈表時遇到了麻煩。每當程序運行在特定部分時:循環鏈接列表的分段錯誤
ss=ss->next;
有一個Segmentation fault: 11
。問題是什麼? (注:我已經包含了必要的structs
球and
sphere_list , and left out
RGB and
vec`以便不弄亂代碼。)
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'? –