繁体   English   中英

合并两个排序的单链接列表[Bugged]

[英]Merge two sorted singly linked list [Bugged]

嗨,谁能告诉我我合并的地方出了错? 我只需要在代码中找到错误即可。 这是一些Segmentation Fault,这仅意味着我可能正在访问某些不存在的东西。 我看到的很多事情我都照顾好了。

请帮助我解决代码中的错误。

提前致谢。

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;
}

这是我的解决方案

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;
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM