单链表——求两个集合的差集 A,B集合求差集放到C链表中

一般地,设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;
}

  • 4
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值