#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);
}
差集A-B(链表)
最新推荐文章于 2023-09-19 23:43:39 发布