回 帖 发 新 帖 刷新版面

主题:用头插法合并两个有序的单链表

用头插法合并两个有序的单链表

回复列表 (共2个回复)

沙发

想问什么呢?如果想要代码,貌似baidu直达

板凳

严蔚敏老师的书的第二章上就有,感觉那个实现还比较优雅,下面是伪代码,没太检查,你可以看看思想,和书上差不多:
llist
merge_lists(llist l1, llist l2)
{
    node *lap, *lbp, *lcp;
    lap = l1->next; lbp = l2->next; lcp = l1;
    while (lap && lbp) {
        if (lap->data <= lbp->data) {
            lcp->next = lap; lcp = lap; lap = lap->next;
        }
        else {
            lcp->next = lbp; lcp = lbp; lbp = lbp->next;
        }
    }
    lcp->next = (lap ? lap : lbp); /* 这句很精妙 */
    return l1;
}

我来回复

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