回 帖 发 新 帖 刷新版面

主题:求助:C++题 将两个有序整型单链表合并为一个有序单链表

求助:C++题 将两个有序整型单链表合并为一个有序单链表 
谁能写个这个题的代码啊,很着急~~~谢谢了~~~

回复列表 (共1个回复)

沙发

PListlink merge(PListlink La,PListlink Lb)
{
    assert(La && Lb);
    //取小者为表头
    PListlink h, t;
    if (La->data <= Lb->data)
    {
        h = La; t = Lb;
    }
    else
    {
        h = Lb; t = La;
    }
    PListlink p = h;
    PListlink pp = p->next;

    while (p->next)
    {
        //找到比另一个表头元素大的节点,交换表头,指向较小元素
        if (pp->data < t->data)
        {
            p = p->next;
            pp = p->next;
        }
        if (pp->data > t->data)
        {
            p->next = t;
            t = pp;
            pp = p->next;
        }

        //删除重复节点
        while (p->data == pp->data || pp->data == t->data)
        {
            p->next = pp->next;
            delete pp;
            if (p->next == NULL)
            {
                //一个链表消耗完毕,将另一个表接到其尾部返回
                p->next = t;
                return h;
            }
            pp = p->next;
        }
    }
    return h;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册