列表插入
向有序列表插入一新元素。不是很友好的做法:
list l = (list) malloc(sizeof(struct list));
l -> val = val;
if(the_list == NULL || the_list -> val >= val)
{
/* insert the element first */
l -> next = the_list;
the_list = l;
} else {
list q = the_list;
list p = q -> next;
for(; p && p -> val < val; q = p, p = p -> next)
;
l -> next = p;
q -> next = l;
}更加 idiom 的做法:
list *p;
list l = (list) malloc(sizeof(struct list));
l -> val = val;
for(p = &the_list; *p && (*p) -> val < val; p = &((*p) -> next))
;
l -> next = *p;
*p = l;