| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 432 人关注过本帖
标题:不懂?麻烦大家讲解一下
只看楼主 加入收藏
henji
Rank: 1
等 级:新手上路
帖 子:227
专家分:0
注 册:2009-4-19
结帖率:38.67%
收藏
已结贴  问题点数:10 回复次数:2 
不懂?麻烦大家讲解一下
//这段代码是如何合并两个单链线性表的?
void MergeLList_L(LinkList &La,LinkList &Lb,LinkList &Lc)
{
    LinkList pa,pb,pc;
    pa=La->next;pb=Lb->next;Lc=pc=La;
    while(pa&&pb)
    {
        if(pa->data<=pb->data)
        {
            pc->next=pa;pc=pa;pa=pa->next;
        }
        else
        {
            pc->next=pb;pc=pb;pb=pb->next;
        }
    }
    pc->next=pa? pa:pb;
    free(Lb);
}
搜索更多相关主题的帖子: 麻烦 讲解 
2009-09-18 11:25
chenaiyuxue
Rank: 5Rank: 5
来 自:山东滨州
等 级:职业侠客
帖 子:334
专家分:370
注 册:2008-5-20
收藏
得分:10 
void MergeLList_L(LinkList &La,LinkList &Lb,LinkList &Lc)
{
    LinkList pa,pb,pc;
    pa=La->next;pb=Lb->next;Lc=pc=La;  //分别把pa和pb指向La和Lb的第一个结点(即头结点的下一个结点);Lc和
                                       //pc指向La的头结点
    while(pa&&pb)                      //若La和Lb不为空,或未到La和Lb的表尾,则循环
    {
        if(pa->data<=pb->data)         //如果La中的数据小于等于Lb中的数据
        {
            pc->next=pa;pc=pa;pa=pa->next; // 则把La中的结点放入Lc中,pc和pa后移一个结点
        }
        else                          //如果La中的数据大于Lb中的数据
        {
            pc->next=pb;pc=pb;pb=pb->next;  //则把Lb中的结点链放Lc中,pc和pb后移一个结点
        }
    }
    pc->next=pa? pa:pb;  //上面循环结束的条件是要么pa = NULL,要么pb = NULL,或者pa和pb都为NULL
                         //若pa = NULL,刚把pb剩余的部分链入Lc的尾部;若pb = NULL,则把pa的剩余部分链入
                         //Lc的尾部
    free(Lb);           //由于Lc的指针是借用的La的指针,即初始化部分的Lc = La,所以最后只释放掉Lb就可以了
}

你是雪,我是尘埃,相遇是意外;你坠落,在我胸怀,流进我血脉。
2009-09-18 16:10
henji
Rank: 1
等 级:新手上路
帖 子:227
专家分:0
注 册:2009-4-19
收藏
得分:0 
如果第一个链表的结点是1,2,3,4;
第二个链表的结点是4,3,5,6;
那么合并最后的链表岂不是是1,2,3,4,4,5,5,6?是不是逻辑有些问题啊?
2009-09-20 13:43
快速回复:不懂?麻烦大家讲解一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016973 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved