㈠ c语言求集合运算
可以用线性表模拟集合,把两个线性表中一样的数提取出来就是交集,所有元素组成的就是并集,还可以用C++重载运算符实现+就求并集之类的。
㈡ 数据集合处理(C语言)
这是个庞大的工程啊,你多给点分,我给你写
㈢ 用C语言合并两个集合
楼主可以参考严蔚敏的《数据结构》,清华出版社的,第二章有讲合并集合,有算法,填一下就可以用,没有学线性表可以参考算法思想。
㈣ C语言中如何复制数组的内容
C语言中复制数组的内容源代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 10
void show_array(const int ar[], int n);
int main()
{
int values[SIZE] = {1,2,3,4,5,6,7,8,9,10};
int target[SIZE];
double curious[SIZE / 2] =
{2.0, 2.0e5, 2.0e10, 2.0e20, 5.0e30};
puts("memcpy() used:");
puts("values (original data): ");
show_array(values, SIZE);
memcpy(target, values, SIZE * sizeof(int));
puts("target ( of values):");
show_array(target, SIZE);
puts("
Using memmove() with overlapping ranges:");
memmove(values + 2, values, 5 * sizeof(int));
puts("values -- elements 0-5 copied to 2-7:");
show_array(values, SIZE);
puts("
Using memcpy() to double to int:");
memcpy(target, curious, (SIZE / 2) * sizeof(double));
puts("target -- 5 doubles into 10 int positions:");
show_array(target, SIZE/2);
show_array(target + 5, SIZE/2);
system("pause");
return 0;
}
void show_array(const int ar[], int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d ", ar[i]);
putchar('
');
}
(4)复制一个集合c语言扩展阅读
1、C语言编程中,将常用的操作封装成函数进行调用,可以大大简化程序的编写,而且在代码的维护性及可读性方面也提供了便利。
2、不同地方需要对处理后的数组内容多次进行显示,并且很多情况下并非显示数组里面的全部内容,而仅仅是想观察数组中的部分数据内容,若每次显示时都用printf函数写的话,可以写一个自定义的通用函数,用来根据需要显示数组中的内容。
㈤ 数据加入一个集合 c语言菜鸟问题
你的意思是把所有质数添加到一个数组中吗,
#include<stdio.h>
intmain()
{
inti,t,k,a,b,m=0;
intarray[500];//添加的数组
intn;//记录有几个质数
printf("输入任意两数a,b");
scanf("%d,%d",&a,&b);
for(i=a;i<=b;i++)
{
t=1;
for(k=2;k<i;k++)
{
if(i%k==0)
{
t=0;
break;
}
}
if(t)
{
n++;array[m++]=i;printf("%d",i);
}
}
for(intnn=0;nn<n;nn++)printf("%d",array[nn]);
return0;
}
㈥ c语言求两个集合的并集然后按照从小到大输出
qsort(A,a-1,sizeof(A[0]),cmp); a-1改成a 是元素个数
你这个解法复杂度度太大 直接用个set存就行拉
不会用set 就用类似归并的方法A,B排序 判前一个有没和当前的重复
㈦ 用C语言实现集合的并集
用两个数组表示集合元素
对于AUB=C
先把A的数据 复制到C里面
然后 遍历B数组,每个元素和A对比,如果存在 则略过,否则添加到C中。
等到的C
即为并集
㈧ c语言 离散数学集合复合运算的代码,(R。R)的代码实现
//说明:输入的格式需要提示按输入,因为要获取正确的有序对才能进行复合运算
/*
*************输入格式如:a b, #,# 退出***************
输入:a b
输入:b t
输入:t d
输入:s j
输入:j i
输入:c a
*/
#include "stdlib.h"
typedef char Element;
struct Node
{
Element left;
Element right;
struct Node *next;
};
struct Node *CreateLink();
struct Node *Operation(struct Node *R,struct Node *S);
void PrintLink(struct Node *h);
int main()
{
struct Node *hdR,*hdS,*rhd;
printf("请输入第一个集合R的关系\n");
hdR = CreateLink();
PrintLink(hdR);
printf("\n请输入第二个集合S的关系\n");
hdS = CreateLink();
PrintLink(hdS);
rhd = Operation(hdR,hdS);
if (rhd->next == NULL)
{
printf("\nR。S结果为空集\n");
}
else
{
printf("\nR。S结果为:\n");
PrintLink(rhd);
}
return 0;
}
struct Node *CreateLink()
{
struct Node *head, *p;
printf("*************输入格式如:a b, \'#,#\' 退出***************\n");
Element a,b;
head = (struct Node *)malloc(sizeof(struct Node));
head->left = 0;
head->right = 0;
head->next = NULL;
printf("输入:");
scanf("%c %c",&a,&b);
getchar();
while (a != '#')
{
p = (struct Node *)malloc(sizeof(struct Node));
p->left = a;
p->right = b;
p->next = head->next;
head->next = p;
printf("输入:");
scanf("%c %c",&a,&b);
getchar();
}
return head;
}
struct Node *Operation(struct Node *R, struct Node *S)
{
struct Node *newHead,*newP,*newQ;
struct Node *pH, *pNext;
newHead = (struct Node *)malloc(sizeof(struct Node));
newHead->left = 0;
newHead->right = 0;
newHead->next = NULL;
newP = newHead;
if (R->next == NULL || S->next == NULL)
{
return newP;
}
char cLeft,cRight;
pH = R;
while (pH->next != NULL)
{
cLeft = pH->next->left;
cRight = pH->next->right;
pNext = S->next;
while(pNext != NULL)
{
//存在可以复合运算的
if (cRight == pNext->left)
{
//在复合运算结果集中插入数据,如果存在相同的二元关系,则不需要插入
newP = newHead;
while (newP->next != NULL)
{
if (cLeft == newP->left && cRight == newP->right)
{
break;
}
newP = newP->next;
}
if (newP->next == NULL)
{
newQ = (struct Node *)malloc(sizeof(struct Node));
newQ->left = cLeft;
newQ->right = pNext->right;
newQ->next = NULL;
newP->next = newQ;
// newQ->next = newP->next->next;
}
}
pNext = pNext->next;
}
pH = pH->next;
}
return newHead;
}
void PrintLink(struct Node *h)
{
struct Node *p=h->next;
printf("\n");
while (p != NULL)
{
printf("<%c,%c> ",p->left,p->right);
p = p->next;
}
printf("\n");
}
㈨ 怎样用语言c语言实现集合的合并,交集
通过你描述的问题,正确的交集代码如下:
void
bing(char
a[],char
b[],int
m,int
n)
{
char
d[400];
int
i=0,j=0,s=m;
for(i=0;i<m;i++)
d[i]=a[i];
for(i=0;i<n;i++){
for(j=0;j<m;j++)
{
if(b[i]==a[j])
break;
}
if(j==m)
d[s++]=b[i];
}
cout<<"集合并集是:";
for(i=0;i<s;i++)
cout<<d[i]<<"
";
}
㈩ c语言编程,集合
动态规划.
#include<stdio.h>
/*#include<stdlib.h>*/
#include<memory.h>
#defineN5050
intmain(intargc,char*argv)
{
intd[N];
intn,s;
while(scanf("%d",&n)!=EOF){
s=n*(n+1)>>1;
if(s&1){
printf("0 ");
}
else{
s=s>>1;
inti,j;
memset(d,0,N*sizeof(d[0]));
d[0]=1;
for(i=1;i<=n;i++){
for(j=s;j>=i;j--){
d[j]=d[j]+d[j-i];
}
}
printf("%d ",d[s]>>1);
}
}
return0;
}