请设计一个算法,,求A和B两个单链表表示的集合的交集、并集、差集
发布网友
发布时间:2022-04-19 03:06
我来回答
共2个回答
热心网友
时间:2022-04-19 04:35
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{char data; /*定义了数据域,这里存储的是char类型*/
struct Node*next; /*定义了指针域*/
}*linklist;
void readdata(linklist head)
{ linklist p;
char a;
scanf("%c",&a);
while(a!='\n')
{ p=(linklist)malloc(sizeof(structNode));
p->data=a;
p->next=head->next;
head->next=p;
scanf("%c",&a);
}
}
void pop(linklist head)
{ linklist p;
p=head->next;
while(p!=NULL)
{ printf("%c",p->data);
p=p->next;
}
printf("\n");
}
/******求两个链表的并集******/
void bingji(linklist head1,linklisthead2,linklist head3)
{ linklist p1,p2,p3;
p1=head1->next;
while(p1!=NULL)
{ p2=head2->next;
while((p2!=NULL)&&(p2->data!=p1->data))
p2=p2->next;
if((p2!=NULL)&&(p2->data==p1->data))
{ p3=(linklist)malloc(sizeof(struct Node));
p3->data=p1->data;
p3->next=head3->next;
head3->next=p3; }
p1=p1->next; } }
/********求两个链表的交集********/
void jiaoji(linklist head1,linklisthead2,linklist head3)
{ linklist p1,p2,p3;
p1=head1->next;
while(p1!=NULL)
{ p3=(linklist)malloc(sizeof(struct Node));
p3->data=p1->data;
p3->next=head3->next;
head3->next=p3;
p1=p1->next; }
p2=head2->next;
while(p2!=NULL)
{ p1=head1->next;
while((p1!=NULL)&&(p1->data!=p2->data))
p1=p1->next;
if (p1==NULL)
{ p3=(linklist)malloc(sizeof(struct Node));
p3->data=p2->data;
p3->next=head3->next;
head3->next=p3; }
p2=p2->next;
}
}
/********求两个链表的差集************/
void chaji(linklist head1,linklisthead2,linklist head3)
{ linklist p1,p2,p3;
p1=head1->next;
while(p1!=NULL) //循环语句执行链表的差集运算
{ p2=head2->next;
while((p2!=NULL)&&(p2->data!=p1->data))
p2=p2->next;
if(p2==NULL)
{ p3=(linklist)malloc(sizeof(struct Node));
p3->data=p1->data;
p3->next=head3->next;
head3->next=p3;
}
p1=p1->next;
}
}
void main(linklist head1,linklisthead2,linklist head3)
{
int x;
printf("input values and end up with ‘enter’ \n");
head1=(linklist)malloc(sizeof(struct Node)); /*为结点分配内存空间*/
head1->next=NULL;
head2=(linklist)malloc(sizeof(struct Node));
head2->next=NULL;
head3=(linklist)malloc(sizeof(struct Node));
head3->next=NULL;
printf("please input ji he 1 \n");
readdata(head1);
printf("please input ji he 2 \n"); //调用链表输出函数链表数据
readdata(head2);
A:printf("1.bing ji 2.jiaoji 3.cha ji 4.exit \n");
do{
printf("qing xuan ze xu hao\n");
scanf("%d",&x);
switch(x)
{
case 1:
printf("liang ge ji he debing ji shi \n");
jiaoji(head1,head2,head3);
pop(head3);
head3->next=NULL;
break;
case 2:
printf("liang ge ji he dejiao ji shi \n");
bingji(head1,head2,head3);
pop(head3);
head3->next=NULL;
break;
case 3:
printf("liang ge ji he decha ji shi \n");
chaji(head1,head2,head3);
pop(head3);
head3->next=NULL;
break;
case 4: break;
default:goto A; }
}
while(x!=4);
}
热心网友
时间:2022-04-19 05:53
你好哦。
很高兴看到你的问题。
但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。
可能是你问的问题有些专业了,没人会。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也比较热心,可能能快点帮你解决问题。
祝你好运~!
希望我的回答也能够帮到你!
谢谢
请设计一个算法,,求A和B两个单链表表示的集合的交集、并集、差集
p1=p1->next; } } /***求两个链表的交集***/ void jiaoji(linklist head1,linklisthead2,linklist head3){ linklist p1,p2,p3;p1=head1->next;while(p1!=NULL){ p3=(linklist)malloc(sizeof(struct Node));p3->data=p1->data;p3->next=head3->next;head3->next=p3;p1=p1...
非结构化数据如何可视化呈现?
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准...
...a集合b和全集 求两个集合的交集 并集 补集 差集
演示一个求交集,其他的类似 int a[m],b[n], c[k],num=0;for(int i=0;i<m;i++){for(int j=0;j<n;j++)if(a[i]==b[j]){ c[num]=a[i];num++;} }
如何用链表实现集合的交集,并集,差集
printf("请输入集合B的元素\n");for(i=0;i<lb.length;i++)scanf("%d",&lb.elem[i]);difference(la,lb);printf("并集中的元素为:\n");for(i=0;i<la.length;i++)printf("%-4d",la.elem[i]);printf("\n");Intersection(la,lb);printf("交集中的元素为:\n");for(i=0;i...
用c++编写程序,求两线性表的交集,并集,差集。
//直接上代码:#include<iostream>using namespace std;int main(){int a,b;int c,d;cout<<"请输入第一个闭区间的a,b"<<endl;cin>>a>>b;cout<<"请输入第二个闭区间的c,d"<<endl;cin>>c>>d;if(a>b||c>d) {cout<<"输入的区间不合法"<<endl;}else{if(d<a){cout<<"交集...
python集合的运算(交集、并集、差集、补集)
1. 交集(Intersection)交集运算返回两个集合中共同存在的元素。在Python中,可以使用 `&` 运算符或 `intersection()` 方法来实现。例如:```python A = {1, 2, 3} B = {3, 4, 5} intersection = A & B # 或者 A.intersection(B)```结果是 `{3}`。2. 并集(Union)并集运算返回...
什么是集合的并集、交集、差集、补集?
1、并集 对于两个给定集合A、B,由两个集合所有元素构成的集合,叫做A和B的并集。记作:AUB 读作“A并B”例: {3,5}U{2,3,4,6}= {2,3,4,5,6} 2、交集 对于两个给定集合A、B,由属于A又属于B的所有元素构成的集合,叫做A和B的交集。记作: A∩B 读作“A交B”例: A={...
...两个集合A,B(成员为整数),求两个集合的交集,并集,结果存 放于A中...
include <stdio.h>#include <malloc.h>typedef struct node {int num;struct node *next;}AGG;AGG *CreateList() { // 创建单循环链表,返回链表头AGG *head,*p;int i,n;printf("结点个数n = ");scanf("%d",&n);head = p = (AGG *)malloc(sizeof(AGG)); // 专用头结点head->...
用java编写程序,求集合的并集、交集和差集
public static void main(String[] args) { Integer[] A = {1,2,3,4}; Integer[] B = {1,3,7,9,11}; List<Integer> listA = Arrays.asList(A); List<Integer> listB = Arrays.asList(B); List<Integer> jiaoji = new ArrayList<Integer>(); for(Integer a...
python集合的运算(交集、并集、差集、补集)
我们先在这里定义两个集合,因为是求交集,因此A和B的位置调换依然不影响结果。使用集合求并集的方式同样也是两种方式,一种是使用 ‘|’ 运算符进行操作,一种是使用 union() 方法来实现。求并集的时候同样不需要注意 A 和 B 的位置关系。使用集合求差集的方式同样也是两种方式,一种是使用 ‘-’ ...
用c语言求两个集合的交集,并集,差集
} /* 交集 *//* A与B的交集(A∩B):既属于A又属于B的元素构成的集合 */int setIntersection (set A, set B, set *dest) {int i = 0, j = 0, k = 0;dest->length = 0;for (i=0; i<A.length; i++) { /* 外循环遍历A */for (j=0; j<B.length; j++) { /* ...