c snippet 1

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

some usage of pointer to pointer:

1.create a list

struct list

{

void *data;

struct list *next;

};

struct list *list_new(void *x,...)

{

va_list ap;

struct list *list, **p = &list;

va_start(ap, x);

for (; x; x = va_arg(ap, void *))

{

*p = calloc(sizeof(**p));

(*p)->data = x;

p = &(*p)->next;

}

*p = NULL;

va_end(ap);

return list;

}

2.traverse a list

struct list *list_append(struct list *list, struct list *tail)

{

struct list **p = &list;

while (*p)

p = &(*p)->next;

*p = tail;

return list;

}

3.remove an element from a list

void list_remove(struct list *list, void *x)

{

struct list *q, **p = &list;

for (; (*p) && (*p)->data != x; p = &(*p)->next)

;

if (*p != NULL)

{

q = *p;

*p = (*p)->next;

free(q);

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航