用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

数据结构与算法----1.6 A、B元素为整数,严格递增,相同存入C,不同存入D

2019-07-19 作者: Ryan2019举报

[c++]代码库

//***********************************
//功能:A、B元素为整数,严格递增,相同存入C,不同存入D,另分配空间
//日期:2017年9月19日
//作者:Ryan19
//***********************************
#include <iostream>
using namespace std;
const int ListlnitSize=0;
const int Listlnc=10;
typedef int LElemType;
struct SList
{
    LElemType *elem;
    int length,listsize;
};
bool Listlnit(SList &L);//顺序表初始化
bool ListCreate(SList &L,int n,LElemType a[]);//创建顺序表
bool Classify(SList &A,SList &B,SList &C,SList &D);//新表
int main()
{
    const int m=5,n=3;
    LElemType a[m]={1,2,3,4,5};
    LElemType b[n]={2,4,6};
    SList A,B,C,D;
    ListCreate(A,m,a);
    ListCreate(B,n,b);
    cout<<"线性表A为"<<endl;
    for(int j=0;j<m;j++){cout<<A.elem[j]<<"  ";}
    cout<<endl<<"线性表B为"<<endl;
    for(int i=0;i<n;i++){cout<<B.elem[i]<<"  ";}
    Classify(A,B,C,D);
    cout<<endl<<"重新排列后的顺序表C为"<<endl;
    for(int k=0;k<C.length;k++){cout<<C.elem[k]<<"  ";}
    cout<<endl<<"重新排列后的顺序表D为"<<endl;
    for(int t=0;t<D.length;t++){cout<<D.elem[t]<<"  ";}
    cout<<endl;
    return 0;
}
bool Listlnit(SList &L)
{
    L.elem=new LElemType[ListlnitSize];
    if(!L.elem)     return false;  
    L.length=0;
    L.listsize=ListlnitSize;
    return true;
}
bool ListCreate(SList &L,int n,LElemType a[])
{
    int i;
    L.elem=new LElemType[n+ListlnitSize];
    if(!L.elem)         return false;  
    L.length=n;
    L.listsize=n+ListlnitSize;
    for(i=0;i<n;i++)
    {
        L.elem[i]=a[i];
    }
    return true;
}
bool Classify(SList &A,SList &B,SList &C,SList &D)
{
    if (A.length<=B.length)
    {
        C.elem=new LElemType[A.length+ListlnitSize];
        D.elem=new LElemType[B.length+ListlnitSize];
        C.listsize=A.length+ListlnitSize;
        D.listsize=B.length+ListlnitSize;
    }
    else
    {
        C.elem=new LElemType[B.length+ListlnitSize];
        D.elem=new LElemType[A.length+ListlnitSize];
        C.listsize=B.length+ListlnitSize;
        D.listsize=A.length+ListlnitSize;
    }
    C.length=0;
    D.length=0;
    int k=0,t=0,i=0,j=0,m;
    for(m=0;i<A.length && j<B.length;m++)
    {
        if(A.elem[i]==B.elem[j])
        {
            C.elem[k]=A.elem[i];
            k++;
            i++;
            j++;
        }
        else if(A.elem[i]<B.elem[j])
        {
            D.elem[t]=A.elem[i];
            t++;           
            i++;
        }
        else
        {
            D.elem[t]=B.elem[j];
            t++;           
            j++;
        }
    }
    while(i<A.length)
    {
        D.elem[t]=A.elem[i];
        t++;
        i++;
    }
    while(j<B.length)
    {
        D.elem[t]=B.elem[j];
        t++;
        j++;
    }
    C.length=k;
    D.length=t;
    return true;
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...