| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1334 人关注过本帖
标题:来求一个算法
只看楼主 加入收藏
gloomyboy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-8-10
收藏
 问题点数:0 回复次数:8 
来求一个算法
跪求一个程序:
已知线性表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-08-14 15:34
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
就是归并操作啊,看归并排序去
2008-08-14 16:13
gaoce227
Rank: 4
来 自:山东
等 级:业余侠客
帖 子:134
专家分:218
注 册:2008-4-5
收藏
得分:0 
回复 2# leeco 的帖子
没那么严重吧!
2008-09-26 17:33
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:0 
我写这是链表的归并,归并的结果是放在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-09-26 18:15
HAN2008
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2008-9-21
收藏
得分:0 
你在后面用了4个{  }符号 且里面没字符和参数啊????????????????????????
2008-09-29 21:50
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
收藏
得分:0 
呵呵,这是匹配上面的括号,我发的程序都是经过调试能正确运行的..
2008-09-29 22:31
yaohuitc
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-8-19
收藏
得分:0 
这个应该不难吧!好像没那个多项式相加难

Impossible is nothing !   Just go on^^
2008-10-02 15:27
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
学C++的面向对象运用的不错,还有泛型。

倚天照海花无数,流水高山心自知。
2008-10-03 19:52
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
不过说起来还真的不用这么麻烦,你是规范的面向对象。

比较+剪+贴

倚天照海花无数,流水高山心自知。
2008-10-03 19:53
快速回复:来求一个算法
数据加载中...
 
   



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

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