为什么这个功能不起作用? (链表)

Why doesn't this function work? (Linked list)

谁能帮我理解为什么这会导致分段错误?该函数应该在列表末尾添加 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;
}