合并两个排序的链表 编写一个SortedMerge()函数,该函数接受两个列表,每个列表按升序排序,然后将两个列表合并为一个列表,该列表按升序排序。 SortedMerge()应该返回新列表。新列表应通过拼接制成 前两个列表的节点。
运行时错误: 运行时错误分段错误(SIGSEGV) 了解有关段故障的更多信息
Node* SortedMerge(Node* head1, Node* head2)
{
struct Node *result;
// Node *temp;
if(head1==NULL)
return head2;
if(head2==NULL)
return head1;
if(head1->data<=head2->data)
{
result->data=head1->data;
//result=head1;
result->next=SortedMerge( head1->next, head2);
}
else if(head1->data>head2->data)
{
result->data=head2->data;
// result=head2;
result->next=SortedMerge( head1, head2->next);
}
else
{
return NULL;
}
return result;
// Your Code Here
}
可能会出现细分错误。为什么?
答案 0 :(得分:0)
此行“结构节点*结果;”应该是“ struct Node * result = new Node;”。它应该可以解决您的问题
答案 1 :(得分:0)
您要取消引用未初始化的指针。
您的方向正确,但是该函数应根据其值返回head1
或head2
,而不应复制任何data
。
Node* SortedMerge(Node* head1, Node* head2)
{
if(head1==NULL)
return head2;
if(head2==NULL)
return head1;
if(head1->data<head2->data)
{
head1->next=SortedMerge(head1->next, head2);
return head1;
}
else
{
head2->next=SortedMerge(head1, head2->next);
return head2;
}
}