这道题融汇了单链表编程中的几个重要技巧
1.前后指针
2.头指针next设置为空,用原始节点组合成新的单链表
根据下面这个例子不难看懂
LinkList Re_Con_Sort(LinkList L, LinkList M){
LNode*p = L->next, *q = M->next;
LNode *p_rear = NULL;
LNode *q_rear = NULL;
L->next = NULL;
M->next = NULL;
while (p&&q)
{
p_rear = p->next;
q_rear = q->next;
if (p->data < q->data) {
p->next = M->next;
M->next = p;
p = p_rear;
}
else {
q->next = M->next;
M->next = q;
q = q_rear;
}
}
if (p == NULL && q == NULL)return M;//一样长
if (q != NULL)p=q;
while (p)
{
p_rear = p->next;
p->next = M->next;
M->next = p;
p = p_rear;
}
}
int main() {
LinkList L = NULL;
LinkList M = NULL;
L = List_TailInsert(L);
M = List_TailInsert(M);
Re_Con_Sort(L, M);
List_Print(M);
}