| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 635 人关注过本帖
标题:来求一个算法
收藏  订阅  推荐  打印 
gloomyboy
Rank: 1
等级:新手上路
帖子:8
积分:200
注册:2008-8-10
来求一个算法

跪求一个程序:
已知线性表LA和LB中的数据元素按值非递减有序排列,现在要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列,例如:
LA=(3,5,8,11)
LB=(2,6,8,9,11,15,20)
LC=(2,3,5,6,8,8,9,11,11,15,20)
搜索更多相关主题的帖子: 算法  线性  排列  元素  数据  
2008-8-14 15:34
leeco
Rank: 4
等级:高级会员
威望:8
帖子:870
积分:9662
注册:2007-5-10

就是归并操作啊,看归并排序去
2008-8-14 16:13
gaoce227
Rank: 1
等级:新手上路
帖子:35
积分:470
注册:2008-4-5
回复 2# leeco 的帖子

没那么严重吧!
2008-9-26 17:33
geninsf009
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:274
积分:3274
注册:2008-8-16

我写这是链表的归并,归并的结果是放在A里了,你参考一下吧:
#include"LinkedList.h"

//实现两个有序链表的归并,并不占用额外的内存空间

//////////////////////////////////////////////////////////////////
//unionList()函数  归并两个有序链表,最后的结果链表以A返回
//////////////////////////////////////////////////////////////////
template<class T>
void unionList(List<T>& A,List<T>& B)
{
    //判断是否为空的情况分类
    if(A.IsEmpty() && B.IsEmpty())
    {
        cout<<"A,B两个链表都为空!"<<endl;
        exit(1);
    }
    else if(A.IsEmpty() && !B.IsEmpty())
    {
        //A空,B不空
        //把B中的元素全部复制到A中
        T tempt;//暂存取出的结点数据
        LinkNode<T>* srcptr=B.getHead()->link;
        for(int i=1;i<=B.Length();i++)
        {
            //取出源链表中的数据
            tempt=srcptr->data;
            //插入到链表A中去
            A.Insert(i-1,tempt);
            //指针向后推进一格
            srcptr=srcptr->link;
        }
    }
    else if(!A.IsEmpty() && B.IsEmpty())
    {
        //A不空,B空,直接输出A的结果
        return;
    }
    else
    {
        //A,B都不空
        LinkNode<T>* ptrA=A.getHead()->link;
        LinkNode<T>* ptrB=B.getHead()->link;
        LinkNode<T>* ptr=A.getHead();
        int count=0;//计数器
        while(ptrB!=NULL)
        {
            //复位
            ptrA=A.getHead()->link;
            while(ptrA!=NULL)
            {
                //如果发现A中结点值比B中的结点值大
                //则把B中当前结点插入到A中当前结点的前面
                if((ptrA->link!=NULL)
                    && ((ptrB->data)>=(ptrA->data))
                    && ((ptrB->data)<(ptrA->link->data)))
                {
                    //把ptrB所指向的元素插入到ptrA所指向的元素的后面
                    //得到ptrA指针所指向的结点的序号
                    ptr=A.getHead();//复位
                    count=0;//计数器复位
                    while(ptr!=ptrA)
                    {
                        count++;
                        ptr=ptr->link;
                    };
                    //进行插入
                    A.Insert(count,ptrB->data);
                    ptrB=ptrB->link;
                    break;
                }
                else if(ptrB->data<=A.getHead()->link->data)
                {
                    //如果插入的位置在最A的前面
                    A.Insert(0,ptrB->data);
                    ptrB=ptrB->link;
                    break;
                }
                else if(ptrB->data>=A.Locate(A.Length())->data)
                {
                    //如果是在尾部插入
                    A.Insert(A.Length(),ptrB->data);
                    ptrB=ptrB->link;
                    break;
                }
                else
                {
                    //A的指针向后推进
                    ptrA=ptrA->link;
                }
            };
        }
    }
};
///////////////////////////////////////////////unionList()函数结束
2008-9-26 18:15
HAN2008
Rank: 2
等级:注册会员
帖子:52
积分:584
注册:2008-9-21


你在后面用了4个{  }符号 且里面没字符和参数啊????????????????????????
2008-9-29 21:50
geninsf009
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:274
积分:3274
注册:2008-8-16

呵呵,这是匹配上面的括号,我发的程序都是经过调试能正确运行的..
2008-9-29 22:31
yaohuitc
Rank: 2
等级:注册会员
帖子:50
积分:670
注册:2007-8-19

这个应该不难吧!好像没那个多项式相加难

Impossible is nothing !   Just go on^^
2008-10-2 15:27
nuciewth
Rank: 12Rank: 12Rank: 12
来自:我爱龙龙
等级:版主
威望:93
帖子:9521
积分:95068
注册:2006-5-23

学C++的面向对象运用的不错,还有泛型。

倚天照海花无数,流水高山心自知。
2008-10-3 19:52
nuciewth
Rank: 12Rank: 12Rank: 12
来自:我爱龙龙
等级:版主
威望:93
帖子:9521
积分:95068
注册:2006-5-23

不过说起来还真的不用这么麻烦,你是规范的面向对象。

比较+剪+贴

倚天照海花无数,流水高山心自知。
2008-10-3 19:53
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.051620 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved