如何在C中合并两个已排序的链接列表?

时间:2018-05-20 12:42:35

标签: c merge linked-list

我正在尝试合并两个已排序的链接列表,但没有获得所需的O / P.我认为地址分配存在一些问题,但我不确定。任何人都能说明为什么我没有得到任何o / p?

struct Node* SortedMerge(struct Node* a, struct Node* b)
{
    struct Node *head;
    struct Node  **tail=&head;

    while(1)
    {
        if(a==NULL)
        {
           *tail=b;
            break;
        }

        if(b==NULL)
        {
            *tail=a;
            break;
        }

        if(a->data<=b->data)
        {
            *tail=a;
            a=a->next;
            (*tail)->next=NULL;
        }
        else
        {
            *tail=b;
            b=b->next;
            (*tail)->next=NULL;
        }

        (*tail)=(*tail)->next;
    }
    return head;

}

2 个答案:

答案 0 :(得分:0)

(*tail)=(*tail)->next;

将其替换为: -

tail = &( (*tail)->next );

我希望它能奏效。

答案 1 :(得分:0)

您应该考虑使用append函数来简化代码。这是一个例子:

if __name__ == '__main__':
    import sys
    error()
    sys.exit(1)