一般地,设A,B是两个集合,由所有属于A且不属于B的元素组成的集合,叫做集合A减集合B(或集合A与集合B之差)。
A={1,2,3} ,B={3,4,5} ,A-B={1,2} 。
个人博客网站:https://www.liuzhi.org.cn/
#include <stdio.h>
#include <malloc.h>
typedef struct Node {
int data;
struct Node *next;
}LNode,*LinkList;
void list(LNode *A,LNode *B,LNode *C);
void PrintList(LNode *head);
void CreateList(LNode *A) { // 创建单循环链表,返回链表头
LNode *p;
int i,n;
scanf("%d",&n);//输入集合元素的个数
for(i = 0; i < n; i++) {
p = (LNode *)malloc(sizeof(LNode));
scanf("%d",&p->data);//输入每个元素,空格隔开
p->next=A->next;
A->next = p;
A = p;
}
}
void PrintList(LNode *head) {
LNode *p = head->next;
while(p) {
printf("%d ",p->data);
p = p->next;
}
}
void list(LNode *A,LNode *B,LNode *C){
LNode *pa,*pb,*pc;
int count;
pa=A->next;
pc =C->next;
while(pa){
count = 0;
pb=B->next;
while(pb){
if(pa->data==pb->data)
count++;
pb=pb->next;
}
if(count==0){
pc = (LNode *)malloc(sizeof(LNode));
pc->data=pa->data;
pc->next=C->next;
C->next = pc;
C = pc;
}
pa = pa->next;
}
}
int main() {
LNode *A,*B,*C;
A= (LNode *)malloc(sizeof(LNode));
A->next=NULL;
B = (LNode *)malloc(sizeof(LNode));
B->next=NULL;
C = (LNode *)malloc(sizeof(LNode));
C->next=NULL;
CreateList(A);
CreateList(B);
list(A,B,C);
PrintList(C);
return 0;
}