请教面试题--链表实现的归并排序
前两天去笔试,碰到一个链表实现归并排序的题目,没做出来,请大侠指导
题目大概是这样,两个函数,第一个是对两个已经排好序的链表归并,第二个是主函数,入参为待排序链表,调用第一个函数。
struct node
{
int value;
node * next;
};
node * merge(node * first, node * second)
{ //对两个已经排好序的链表进行归并
node * head = new node;
node * current;
current = head;
while(first != NULL && second !=NULL)
{
if(first->value < second->value)
{
current->next = first;
first = first->next;
current = current->next;
}
else{
current->next = second;
second = second->next;
current = current->next;
}
}
//把最后剩下的项加到最后面
while(first != NULL)
{
current->next = first;
first = first->next;
current = current->next;
}
while(second != NULL)
{
current->next = second;
second = second->next;
current = current->next;
}
return head->next;
}
node * mergeSort(node * toSortList)
{
node * first = toSortList;
node * second = toSortList->next;
if(first == NULL or second == NULL) return toSortList;
while(second != NULL && second->next != NULL)
{
toSortList = toSortList->next;
second =
}
toSortList =
second =
return merge( , );
}
上面缺的地方是要填的,顺序可能有点误差,不太记得了,不好意思。希望有达人能够帮忙解决,不甚感激。
QQ:357016518