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; }