合并两个有序链表
题目
想法
使用头插法合并
代码
void mergeSortedList(LinkedList l1, LinkedList l2) {
LNode *l1Head = l1;
LNode *l2Head = l2;
LNode *mergedList = (LNode *) malloc(sizeof(LNode));
LNode *curMeredNode = mergedList;
while (l1Head && l2Head) {
while (l1Head->data < l2Head->data) {
//头插法
curMeredNode->next = l1Head->next;
l1Head->next = curMeredNode;
//始终让他在头的位置
LNode *next = curMeredNode->next;
curMeredNode = l1Head;
l1Head = next;
}
while (l1Head->data >= l2Head->data) {
//头插法
curMeredNode->next = l2Head->next;
l2Head->next = curMeredNode;
//始终让他在头的位置
LNode *next = curMeredNode->next;
curMeredNode = l2Head;
l2Head = next;
}
}
//合并剩余结点
while (l1Head) {
//头插法
curMeredNode->next = l1Head->next;
l1Head->next = curMeredNode;
//始终让他在头的位置
LNode *next = curMeredNode->next;
curMeredNode = l1Head;
l1Head = next;
}
while (l2Head) {
//头插法
curMeredNode->next = l2Head->next;
l2Head->next = curMeredNode;
//始终让他在头的位置
LNode *next = curMeredNode->next;
curMeredNode = l2Head;
l2Head = next;
}
}