编程如何编写下列两道题的程序(用C++或VC++6.0)?1,:求两个集合的交集.2:求两个集合的笛卡尔乘积.

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/26 10:30:28
编程如何编写下列两道题的程序(用C++或VC++6.0)?1,:求两个集合的交集.2:求两个集合的笛卡尔乘积.

编程如何编写下列两道题的程序(用C++或VC++6.0)?1,:求两个集合的交集.2:求两个集合的笛卡尔乘积.
编程
如何编写下列两道题的程序(用C++或VC++6.0)?
1,:求两个集合的交集.
2:求两个集合的笛卡尔乘积.

编程如何编写下列两道题的程序(用C++或VC++6.0)?1,:求两个集合的交集.2:求两个集合的笛卡尔乘积.
我这里有求集合的交集并集程序,对你的第一个问题,把int 改为char,对于笛卡尔积,自己实现吧.
#include
using namespace std;
class Node
{
public:
int data;
Node *next;
Node(){next=NULL;}
};
class jihe
{
Node *head1,*head2,*head3,*head4;
public:
jihe(){head1=new Node();head2=new Node();head3=new Node();head4=new Node();}
void creat(); //创建2个集合链表,并输入数据
void display(Node *head); //显示链表
void bing(); //求并集
void jiao(); //求交集
bool is_ni(Node *head); //判断集合是否有逆序
void paixu(Node *head); //对集合排序,由小到大的顺序
void work(); //组织
bool is_chongfu(Node *head);//判断集合是否有重复数据
void chongfu(Node *head); //删除重复数据
};
void jihe::creat()
{
Node *p,*s;
int m;
coutm;
if(m==0) //输入0结束输入
break;
s=new Node(); //输入一个数据就创建一个链表
s->data=m;
p->next=s;
p=p->next;
}
coutm;
if(m==0)
break;
s=new Node();
s->data=m;
p->next=s;
p=p->next;
}
}
void jihe::display(Node *head)
{
Node *p;
p=head->next;
while(p)
{
coutnext;
s->data=q->data;
q=q->next;
}
break;
}
if(q==NULL)
{
while(p)
{
s->next=new Node();
s=s->next;
s->data=p->data;
p=p->next;
}
break;
}
s->next=new Node();
s=s->next;
if(p->data>q->data)
{
s->data=q->data;
q=q->next;
continue;
}
if(p->datadata)
{
s->data=p->data;
p=p->next;
continue;
}
if(p->data==q->data)
{
s->data=p->data;
q=q->next;
p=p->next;
}
}
display(head3);
}
void jihe::jiao()
{
Node *p,*q,*s;
p=head1->next;
q=head2->next;
s=head4;
while(1)
{
if(p==NULL || q==NULL)
break;
if(p->data < q->data)
{
p=p->next;
continue;
}
if(p->data > q->data)
{
q=q->next;
continue;
}
if(p->data==q->data)
{
s->next=new Node();
s=s->next;
s->data=p->data;
p=p->next;
q=q->next;
continue;
}
}
display(head4);
}
bool jihe::is_ni(Node *head)
{
Node *p,*q;
p=head->next;
while(p)
{
q=p->next;
while(q)
{
if(p->data > q->data)
return true;
q=q->next;
}
p=p->next;
}
return false;
}
void jihe::paixu(Node *head)
{
Node *p,*q,*s,*m,*q1,*m1;int t;
p=head;
s=p->next;
m=s;
q=m->next;
while(s->next)
{
t=s->data;
while(q)
{
if(q->data < t)
{
t=q->data;
q1=q;
m1=m;
}
m=m->next;
q=q->next;
}
if(s->data != t)//把找到的最小的提前
{
m1->next=q1->next;
p->next=q1;
q1->next=s;
}
p=p->next;
s=p->next;
m=s;
q=m->next;
}
}
bool jihe::is_chongfu(Node *head)
{
Node *p,*q;
p=head->next;
//异常情况:次集合没有一个元素
if(p == NULL)
return false;
//
q=p->next;
while(p->next)
{
q=p->next;
while(q)
{
if(p->data == q->data )
return true;
q=q->next;
}
p=p->next;
}
return false;
}
void jihe::chongfu(Node *head)
{
Node *p,*q,*m;
p=head->next;
m=p;
while(p->next )
{
q=p->next;
while(q)
{
if(p->data == q->data )
{
m->next=q->next;
delete q;
q=m->next;
continue;
}
q=q->next;
m=m->next;
}
p=p->next;
m=p;
if(p==NULL)
break;
}
}
void jihe::work()
{
creat();
if(is_chongfu(head1))//有重复
chongfu(head1);
if(is_chongfu(head2))//有重复
chongfu(head2);
if(is_ni(head1)) //有逆序
paixu(head1);
if(is_ni(head2))
paixu(head2);
cout

编程如何编写下列两道题的程序(用C++或VC++6.0)?1,:求两个集合的交集.2:求两个集合的笛卡尔乘积. 用C语言编写下列程序,,画红线的! 下列C语言程序哪有错误?用C语言编写编写程序哪有错误? C语言 编写程序 求下列分段函数的值 用c语言编写一个程序,输出下列雪花图案! c语言编程 编写程序求下列表达式的值 x+a%3*(x+y)%2/4.设x=2.5,a=7,y=4c语言编程编写程序求下列表达式的值x+a%3*(x+y)%2/4.设x=2.5,a=7,y=4.7. 用C语言编写程序.输入一些整数,编程计算并输出其中所有正数的和,输入负数或零时,表示输入数据结束.1.输入一些整数,编程计算并输出其中所有正数的和,输入负数或零时,表示输入数据结束. 求问java语言基础的一道小编程 C也可以~用java编写程序输出下列结果 :C也可以 主要要一个思路 11 21 2 31 2 3 41 2 3 4 51 2 3 4 5 6求全部编程 编写一个程序,将2小时25分钟转换成用分钟表示,输出转换前后的数值.(是用C语言编程) 关于c语言的编程问题 设有整数A,B,C,编写程序,打印三个数中的最小者.要求 1 编写2个程序实关于c语言的编程问题设有整数A,B,C,编写程序,打印三个数中的最小者.要求1 编写2个程序实现该功能.2 C语言随机数序列编程:用C语言程序编写.生成随机数序列.范围:1-15要求生成1-15的随机序列,中间无重复C语言随机数序列编程:用C语言程序编写.生成随机数序列.范围:1-15.要求生成1-15的随 编写一个程序,物体从高度为H做自由落体运动,求物体落地需要的时间C语言编程问题, 编写程序用牛顿-拉夫逊法进行潮流计算?编写程序用牛顿-拉夫逊法进行潮流计算.使用的编程语言不限,计算精度要求10-5. 要将100元钱换成1元、2元、5元的零钱.每种钱数大于0,而且为5的倍数,编程计算有多少种换法?用c语言编程怎么编写程序 编写程序:输入x的值,按照下列公式计算cos(x) cos(x)=1-x2/2!+ x4/4!- x6/6!+...精确到10-5.C语言编程 C编程的:编写一个程序,此程序要求输入一个整数,然后打印出从输入的值到比输入的值大10的所有整数.要求在各个输入值之间用空格分开 坐等啊 在编写单片机程序时,平方符号怎么表示?C语言编程,‘^’这个符号不是异或啊,那平方符号是什么? 用C语言或Matlab编写一个 单源从一点到其它点最短路径长度 的程序