嗨,谁能告诉我合并错误的地方? 我只需要在我的代码中找到bug。 Ther是一些分段错误,这只意味着我可能正在访问我猜不到的东西。我看到我照顾所有的情况。
请帮我解决代码中的错误。
提前致谢。
Node* MergeLists(Node *headA, Node* headB)
{
if(headA==NULL) return headB;
if(headB==NULL) return headA;
Node *head;
Node *tail;
while(headA!=NULL&&headB!=NULL)
{
Node *t;
if(headA->data < headB->data)
{
t=headA;
headA=headA->next;
}
else
{
t=headB;
headB=headB->next;
}
if(head==NULL)
{
tail=t;
head=t;
tail->next=NULL;
}
else
{
tail->next=t;
tail=tail->next;
tail->next=NULL;
}
if(headA==NULL)
{ tail->next=headB; return head;}
if(headB==NULL)
{ tail->next=headA; return head;}
}
return head;
}
答案 0 :(得分:1)
这是我的解决方案
void merge(Node* a, Node* b, struct Linkedlist* res)
{
if(a!=NULL&&b!=NULL)
{
if(a->data == b->data)
{
nodePushBack(res, a->data);
merge(a->next, b->next, res);
}
else if(a->data < b->data)
{
nodePushBack(res, a->data);
merge(a->next, b, res);
}
else{
nodePushBack(res, b->data);
merge(a, b->next,res);
}
}
while(a!=NULL&&b == NULL)
{
nodePushBack(res, a->data);
a = a->next;
}
while(a==NULL&&b!=NULL)
{
nodePushBack(res, b->data);
b = b->next;
}
}