list* merge_order_list_normal(list* list_a, list* list_b){
if(!list_a)
return list_b;
if(!list_b)
return list_a;
list* list_merge, list_cursor;
if(list_a->value <= list_b->value)
list_cursor = list_merge = list_a;
list_a = list_a->next;
else
list_cursor = list_merge = list_b;
list_b = list_b->next;
while(list_a && list_b){
if(list_a->value <= list_b->value){
list_cursor->next = list_a;
list_a = list_a->next;
}
else{
list_cursor->next = list_b;
list_b = list_b->next;
}
list_cursor = list_cursor->next;
}
list_cursor->next = list_a?list_a:list_b;
return list_merge;
}
list* merge_order_list_recursive(list* list_a, list* list_b){
if(!list_a)
return list_b;
if(!list_a)
return list_a;
list* list_merge;
if(list_a->value <= list_b->value){
list_merge = list_a;
list_merge->next = merge_order_list_recursive(list_a->next, list_b);
}
else{
list_merge = list_b;
list_merge->next = merge_order_list_recursive(list_b->next, list_a);
}
return list_merge;
}
合并两个升序单链的递归和非递归算法
最新推荐文章于 2022-03-28 15:16:59 发布