我试图创建链接列表插入函数,该函数接受一个列表(或更正确的指向它的指针),然后将该值插入到列表的末尾。链接列表插入函数 - 通过指针传递列表
void ll_insert(struct ll **l, int n){
struct ll *temp=NULL;
while ((*l) != NULL){
temp= (*l);
(*l) = (*l)->next;
}
(*l)= (struct ll*)malloc(sizeof(struct ll));
(*l)->n=n;
(*l)->next=NULL;
if (temp) temp->next= (*l);
}
int main(void){
struct ll *l=NULL;
ll_insert(&l, 1);
printf("%d ", l->n);
ll_insert(&l, 1);
ll_insert(&l, 2);
ll_insert(&l, 3);
printf("%d ", l->n);
}
运行上述代码之后的输出是1 3.这并不奇怪,因为
(*l) = (*l)->next;
更新列表,以指向到端节点,并且每次我运行刀片(。 ..)列表的头更新指向结束(如果我没有错)。这是怎么回事?
请您进一步解释两种情况之间的区别? – Smokie 2012-07-17 02:33:36
@Smokie第一个是将'next'指针本身赋值给'l'指向的指针;第二个是将一个指针**分配给**'next'给变量'l'本身。 – dasblinkenlight 2012-07-17 02:39:45