c语言求并集

简单点的,就两个数组,一个并到另一个,相同的覆盖。... 简单点的,就两个数组,一个并到另一个,相同的覆盖。 展开
 我来答
星月小木木
推荐于2017-09-01 · TA获得超过3.2万个赞
知道大有可为答主
回答量:2.4万
采纳率:0%
帮助的人:1亿
展开全部
C语言求两个顺序表的并集函数为:
void fun(int a[],int b[],int n,int m,int c[]){
int i=0,j=0,k=0;
for (k=0;k<n+m;k++){
if(i>=n||a[i]>b[j]) {c[k]=b[j];j++;continue;}
if(j>=m||a[i]<b[j]) {c[k]=a[i];i++;continue;}
}
}
void main(){
int a[10],b[10],c[20];
printf("input a");
for(i=0;i<10;i++)scanf("%d",a+i);
printf("input b");
for(i=0;i<10;i++)scanf("%d",b+i);
fun(a,b,10,10,c);
for(i=0;i<20;i++)printf("%d ",c[i]);
}
匿名用户
2013-08-02
展开全部
#include <stdio.h>
void main()
{
int a[100],b[100],m,n,i=0,j=0,k=0,p=0;
printf("input a[],end of -1:\n");
scanf("%d",&a[0]);
while(a[i]!=-1){
i++;
scanf("%d",&a[i]);
}
m=i;
printf("input b[],end of -1:\n");
scanf("%d",&b[0]);
while(b[j]!=-1){
j++;
scanf("%d",&b[j]);
}
n=j;
for(j=0;j<n;j++){
for(i=0;i<m;i++){
if(a[i]==b[j])
p=1;
}
if(p!=1){
a[m+k]=b[j];
k++;
}
p=0;
}
for(i=0;i<m+k;i++)
printf("%d ",a[i]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-02
展开全部
#include <set>
#include <deque>
#include <algorithm>
#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
set<int> set1, set2;
deque<int> set3;
deque<int>::iterator itr,itr1;
for(int i = 1; i < 4; ++i)
set1.insert(i);
for(int j = 3; j < 10; ++j)
set2.insert(j);

set3.resize(set1.size()+set2.size());

merge(set1.begin(), set1.end(), set2.begin(), set2.end(), set3.begin());
itr1 = unique(set3.begin(), set3.end());

for(itr = set3.begin(); itr < itr1; ++itr)
cout<<*itr<<endl;

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-05-27
展开全部
int unionset(int arrayone[],int arraytwo[])//定义求并集函数,
{
int i,j,c[10],k=0,num;
for(i=0;i<4;i++)
c[k++]=arrayone[i];
for(i=0;i<4;i++)
c[k++]=arraytwo[i];//两个数组存入为一个
for(j=0;j<k;j++)
{
for(i=0;i<k-j;i++)
{
if(c[i]>c[i+1])
{
num=c[i];
c[i]=c[i+1];
c[i+1]=num;
}
}
}//冒泡排序
for(i=0;i<k;i++)
{
if(c[i]!=c[i+1])
printf("%d ",c[i]);//筛除重复,输出并集
}
printf("\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜幕里的曙光
2023-03-12 · TA获得超过108个赞
知道小有建树答主
回答量:1079
采纳率:27%
帮助的人:55.8万
展开全部
假设我们有两个数组`arr1`和`arr2`,它们的长度分别为`n1`和`n2`,现在要将`arr2`并入`arr1`中。可以使用以下代码实现:

```c
for (int i = 0; i < n2; i++) {
int found = 0;
for (int j = 0; j < n1; j++) {
if (arr2[i] == arr1[j]) {
found = 1; // arr2[i]在arr1中已经存在
break;
}
}
if (!found) { // arr2[i]在arr1中不存在,需要加入到arr1中
arr1[n1++] = arr2[i];
}
}
```

在这个示例中,我们使用了两个循环来遍历数组元素。具体来说,我们通过一个外层循环来遍历数组`arr2`的所有元素,并在内层循环中查找该元素是否已经存在于数组`arr1`中。

对于每个元素`arr2[i]`,我们首先假设它在`arr1`中尚不存在(即`found=0`),然后在`arr1`中搜索该元素。如果搜索到了相同的元素(即`arr2[i] == arr1[j]`),则将`found`设置为1表示该元素已经存在,同时跳出内层循环。如果内层循环结束后`found`仍然为0,则说明`arr2[i]`在`arr1`中不存在,需要将其添加到`arr1`中。

最终,我们得到的`arr1`就是`arr1`和`arr2`的并集。其中,重复的元素会被覆盖掉,不会出现重复的情况。注意,在这个示例中,我们假设`arr1`具有足够的容量来存储并集。如果`arr1`的容量不足,可能需要重新分配内存来扩大数组大小。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式