用c语言给定两个整数集合 a,b. 分别编写函数求这两个集合的并集(剔除重复元

如题所述

#include<iostream>
using namespace std;
class MergeList
{
int *a;
int size;
public:
MergeList(int size,int init)
{
this->size=size;
a=new int[size];
for(int i=0;i<size;i++)
{
a[i]=init;
}

}
MergeList()
{
}
MergeList(const MergeList&obj)
{
this->size=obj.size;
a=new int[size];
for(int i=0;i<size;i++)
a[i]=obj.a[i];
}
void SetData(int&index, int&data)
{
a[index]=data;
}
int&GetSize(){return size;}
~MergeList()
{
delete []a;
}
MergeList&operator=(const MergeList&obj)
{
this->size=obj.size;
a=new int[size];
for(int i=0;i<size;i++)
a[i]=obj.a[i];
return *this;
}
bool Is_Same(int &element);
MergeList AddList(const MergeList&obj);
void Show()
{
for(int i=0;i<size;i++)
cout<<a[i]<<" ";
cout<<endl;
}
};
bool MergeList::Is_Same(int &element)
{
for(int i=0;i<size;i++)
{
if(a[i]==element)
return true;
}
    return false;
}
MergeList MergeList::AddList(const MergeList&obj)
{

     MergeList C;
 int m=0,i=0;
 C.size=size+obj.size;
 C.a=new int[C.size];
 if(size<obj.size||(size==obj.size))
 {
 for(i=0;i<size;i++)
 {
 C.a[i]=a[i];
 }
 }
 else
 {
 for(i=0;i<obj.size;i++)
 {
 C.a[i]=obj.a[i];

 }
 }
for(int j=0;j<obj.size;j++)
{
if(!this->Is_Same(obj.a[j]))
{
           C.a[i+m]=obj.a[j];
    m++;
}
}
C.size=i+m;
return C;
}
int main()
{
int LengthA,LengthB;
cout<<"input length a:";
cin>>LengthA;
cout<<"input length b:";
cin>>LengthB;
MergeList A(LengthA,2),B(LengthB,2),C;
cout<<"input A:"<<endl;
for(int i=0;i<A.GetSize();i++)
{
int a;
cin>>a;
A.SetData(i,a);
}
cout<<"input B:"<<endl;
for(int j=0;j<B.GetSize();j++)
{
int b;
cin>>b;
B.SetData(j,b);
}
C=A.AddList(B);
cout<<"合并后:"<<endl;
C.Show();
}

追问

这是c语言吗??😳😳

追答

这是C++,不过我觉得其实用C语言写没有用C++写这么麻烦...两个函数就可以搞定!
你可以用这个跟你们的老师装一下!
就说你自己自学C++,他会对你刮目相看的

追问

要用c语言的指针…被识破了怎么办?😂😂

追答

我想你应该看到了,这里面有用很多指针来操作!
你们的老师就算知道不是你自己写的也不会说你的!
1:鼓励你学习岂不更好!
2:相信你可以完成岂不是更好!

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答