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

两个有序链表的合并.

Posted on 2006-06-20 21:02 Enjoy Life 阅读(1289) 评论(2)  编辑 收藏 引用 所属分类: 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上节省空间。这个在严蔚敏的数据结构上有,去翻翻书看看。。。


标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)
 
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接: