posts - 63, comments - 37, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 ::  :: 管理

两个有序链表的合并.

Posted on 2006-06-20 21:02 Enjoy Life 阅读(5508) 评论(5)  编辑 收藏 引用 所属分类: DS study

void MergList_L(LNode *La, LNode *Lb, LNode *Lc){

    LNode *pa, *pb, *pc;

    pa = La->next;

    pb = Lb->next;

    pc = Lc = La;

    while(pa && pb){

        if(pa->data <= pb->data){ // 小的先挂到Lc上去

            pc->next = pa;

            pc = pc->next;

            pa = pa->next;

        }  

        else{

            pc->next = pb;

            pc->next = pc;

            pb = pb->next;

        }

    }  

    pc->next = pa? pa:pb; // 将剩余的所有节点直接挂到Lc上去

    free(Lb);

}

 

Feedback

# re: 两个有序链表的合并.  回复  更多评论   

2008-10-06 15:37 by question
pa = La->next;

pb = Lb->next;

pc = Lc = La;
为什么不是
pa = La;
pb = Lb;
丢了2个头元素

为什么pc指向La

# re: 两个有序链表的合并.[未登录]  回复  更多评论   

2008-10-31 10:55 by bruce
pa=La->next;
pb=Lb->next;
因La,Lb分别为两个单链表的头指针。
pa,pb分别指向链表的正在比较的结点。
pc指向La是因为要将两个链表合并在La上节省空间。这个在严蔚敏的数据结构上有,去翻翻书看看。。。

# re: 两个有序链表的合并.  回复  更多评论   

2009-02-13 21:58 by jesse
==<<
else{

pc->next = pb;

pc->next = pc;

pb = pb->next;

}
===============
中的pc->next = pc 应该为 pc = pc->next; 才对。

# re: 两个有序链表的合并.  回复  更多评论   

2009-08-22 19:24 by imagany
两个序列一个倒序一个正序怎么办?

# re: 两个有序链表的合并.  回复  更多评论   

2014-04-13 13:34 by guoxiaoming
程序有bug
只有注册用户登录后才能发表评论。