差集A-B(链表)

来源:互联网 发布:龙珠超宇宙捏脸数据 编辑:程序博客网 时间:2024/06/05 18:02
#include<stdio.h>#include<stdlib.h>typedef struct LNode{    struct LNode *next;    int data;}LNode,*lnode;void createList(lnode &l,int n){    lnode p,q;    l=(lnode)malloc(sizeof(LNode));    p=l;    for(int i=0;i<n;i++)    {        q=(lnode)malloc(sizeof(LNode));        scanf("%d",&q->data);        p->next=q;        p=q;    }    p->next=NULL;}void difference(lnode &A,lnode &B){    lnode pre,p,q,r;    p=A->next;    pre=A;    q=B->next;    while(p&&q)    {        if(p->data<q->data)        {            pre=p;            p=p->next;        }        else if(q->data<p->data)        {            q=q->next;        }        else        {            r=p;            pre->next=p->next;            p=p->next;            free(r);        }    }}void printList(lnode l){    lnode p;    p=l->next;    while(p)    {        printf("%d ",p->data);        p=p->next;    }}void main(){    lnode A,B;    int n;    scanf("%d",&n);    printf("input A: \n");    createList(A,n);    printf("input B: \n");    createList(B,n);    difference(A,B);    printf("output A-B: \n");    printList(A);}
0 0