| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4168 人关注过本帖
标题:用c++实现两个有序(从小到大)顺序表合并成为一个顺序表,合并后的结果放在 ...
只看楼主 加入收藏
smallpin
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-5-27
结帖率:0
收藏
 问题点数:0 回复次数:2 
用c++实现两个有序(从小到大)顺序表合并成为一个顺序表,合并后的结果放在第一个顺序表中(假设这两个有序顺序表中没有相同的元素)。求帮忙。。。。
#include<iostream.h>
const int MaxSize=100;
class SeqList
{
public:
      SeqList(int a[], int n);       //有参构造函数
        int Length();
         void Insert( int b[],int length2);  //在线性表中第i个位置插入值为x的元素
        void PrintList();       //遍历线性表,按序号依次输出各元素
private:
    int data[MaxSize];      //存放数据元素的数组
    int length;            //线性表的长度
};
SeqList::SeqList(int a[], int n)
{
    int i;
    if (n>MaxSize) throw "参数非法";
    for (i=0; i<n; i++)  
        data[i]=a[i];
    length=n;
}
int SeqList::Length()
{
    return length;
}
void SeqList::Insert( int b[],int length2)
{
    int j,h;
           for(int i=0;i<length2;i++)
        for (j=length-1; j>0; j--)
            for(h=0;h<i;h++)
                if(b[i]<data[j])
                    {
                        data[j+1]=data[j];   //注意第j个元素存在数组下标为j-1处
                        data[j]=b[i];
                    }
        
        length++;
    }
void SeqList::PrintList()
    {
        for(int i=0;i<length;i++)
            cout<<data[i]<<endl;
    }
    void main()
    {
        int a[5]={1,2,5,6,8};
        int b[3]={0,7,9};
        SeqList s(a,5);
        SeqList c(b,3);
        cout<<"第1组"<<endl;
        s.PrintList();
        cout<<"第2组"<<endl;
        c.PrintList ();
        cout<<"第3组"<<endl;        
        int x=c.Length ();
        s.Insert (b,x);
        s.PrintList();
    }
运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册


将顺序表插入到另一个顺序表中,只循环一次,就停止了,不知道怎样吧顺序表中的数据全部查到另一个中,且是顺序表是从小到大的顺序,弄的我头好大哦,希望高手帮帮忙。。
搜索更多相关主题的帖子: 顺序 元素 从小到大 结果 
2010-09-26 16:53
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
void SeqList::Insert( int b[],int length2)
{
    int j, h, i=0;

        for (j=0; j<length && i<length2; ++j)
        {
            if(b[i]<data[j])
            {
                for(h=length; h != j; --h)
                    data[h] = data[h-1];
                data[j] = b[i];
                ++length;   
                ++i;
            }
            else if(j == length-1&&b[i]>data[length-1])
            {
                data[length] = b[i];
                length++;
                ++i;
            }
        }
}
2010-09-26 18:27
雪影风
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-10-28
收藏
得分:0 
顶一下,版主真强!
2010-11-05 21:24
快速回复:用c++实现两个有序(从小到大)顺序表合并成为一个顺序表,合并后的结 ...
数据加载中...
 
   



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

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