本文共 747 字,大约阅读时间需要 2 分钟。
/** * 合并两个有序链表,合并后依旧有序,当链表1是空链表时,合并结果就是链表2,但链表2是空链表时, * 合并结果是链表1;如果两都是空链表,合并结果就是空链表; * 比较两个链表的头结点,小的作为合并后的头结点,在剩余节点中,再次比较两个链表的头结点(采用递归)。 */struct list_head *merge_two_list(struct list_head *list_one, struct list_head *list_two){ struct list_head *new_head = NULL; /*链表1为空*/ if (!list_one) return list_two; /*链表2为空*/ if (!list_two) return list_one; /*链表1头结点的值 小于 链表2头结点的值*/ if (list_one->data < list_two->data) { new_head = list_one; /*链表1头结点作为新链表的头结点*/ new_head->next = merge_two_list(list_one->next, list_two); } else { /*链表2头结点的值 小于 链表1头结点的值*/ new_head = list_two; new_head->next = merge_two_list(list_one, list_two->next); } return new_head; /*返回新链表的头结点*/}
参考文章:
转载地址:http://bdqkb.baihongyu.com/