1
我需要使用合并排序对链接列表进行排序。我把这些代码放在一起,但我遇到了一个奇怪的错误。合并排序链接列表
我的链接列表由随机数填充。但是,在排序后,它只会按排序顺序显示比链表第一个元素大的数字。
下面是我的一些代码:
node* MergeSort(node *my_node)
{
node *secondNode;
if (my_node == NULL)
return NULL;
else if (my_node->next == NULL)
return my_node;
else
{
secondNode = Split(my_node);
return Merge(MergeSort(my_node),MergeSort(secondNode));
}
}
node* Merge(node* firstNode, node* secondNode)
{
if (firstNode == NULL) return secondNode;
else if (secondNode == NULL) return firstNode;
else if (firstNode->number <= secondNode->number) //if I reverse the sign to >=, the behavior reverses
{
firstNode->next = Merge(firstNode->next, secondNode);
return firstNode;
}
else
{
secondNode->next = Merge(firstNode, secondNode->next);
return secondNode;
}
}
node* Split(node* my_node)
{
node* secondNode;
if (my_node == NULL) return NULL;
else if (my_node->next == NULL) return NULL;
else {
secondNode = my_node->next;
my_node->next = secondNode->next;
secondNode->next = Split(secondNode->next);
return secondNode;
}
}
嗯,是的。我看到我要去哪里错了。谢谢。这固定了它。 – xbonez 2011-04-12 15:44:18