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