这是数据结构上的一道题,求求大佬们帮帮忙,真的不会😭
望采纳,谢谢
可以使用以下代码来实现:
#include <stdio.h>
#include <stdlib.h>
//定义链表结构体
typedef struct node
{
int data;
struct node *next;
}Node;
//求两个集合的并集
Node *unionSet(Node *head1, Node *head2)
{
Node *head = NULL;
Node *p = head1;
while (p != NULL)
{
Node *q = (Node *)malloc(sizeof(Node));
q->data = p->data;
q->next = head;
head = q;
p = p->next;
}
p = head2;
while (p != NULL)
{
int flag = 0;
Node *q = head;
while (q != NULL)
{
if (q->data == p->data)
{
flag = 1;
break;
}
q = q->next;
}
if (flag == 0)
{
Node *q = (Node *)malloc(sizeof(Node));
q->data = p->data;
q->next = head;
head = q;
}
p = p->next;
}
return head;
}
//求两个集合的交集
Node *intersectionSet(Node *head1, Node *head2)
{
Node *head = NULL;
Node *p = head1;
while (p != NULL)
{
int flag = 0;
Node *q = head2;
while (q != NULL)
{
if (q->data == p->data)
{
flag = 1;
break;
}
q = q->next;
}
if (flag == 1)
{
Node *q = (Node *)malloc(sizeof(Node));
q->data = p->data;
q->next = head;
head = q;
}
p = p->next;
}
return head;
}
//求两个集合的差集
Node *differenceSet(Node *head1, Node *head2)
{
Node *head = NULL;
Node *p = head1;
while (p != NULL)
{
int flag = 0;
Node *q = head2;
while (q != NULL)
{
if (q->data == p->data)
{
flag = 1;
break;
}
q = q->next;
}
if (flag == 0)
{
Node *q = (Node *)malloc(sizeof(Node));
q->data = p->data;
q->next = head;
head = q;
}
p = p->next;
}
return head;
}
//判断两个集合是否相等
int isEqual(Node *head1, Node *head2)
{
Node *p = head1;
Node *q = head2;
while (p != NULL && q != NULL)
{
if (p->data != q->data)
{
return 0;
}
p = p->next;
q = q->next;
}
if (p == NULL && q == NULL)
{
return 1;
}
else
{
return 0;
}
}
Regenerate response