有人能帮助我理解为什么这会给我分段错误吗?该函数应该在列表末尾添加 n。
typedef struct lligada {
int valor;
struct lligada *prox;
} *LInt;
void appendL (LInt *l, int n){
LInt new=(LInt)malloc(sizeof(struct lligada));
while ((*l) && (*l)->prox) l=&((*l)->prox);
(*l)->prox=new;
new->valor=n;
new->prox=NULL;
}
如果最初头节点等于NULL
则此状态
(*l)->prox=new;
为您提供分段错误。
更正确的函数定义可能如下所示
void appendL ( LInt *l, int n )
{
LInt new = (LInt)malloc(sizeof(struct lligada));
new->valor = n;
new->prox = NULL;
while ( *l != NULL ) l = &( *l )->prox;
*l = new;
}