C语言程序整数集合的差集与交集

Python015

C语言程序整数集合的差集与交集,第1张

#include <algorithm>

#include <iostream>

#include <iterator>

#include <list>

using namespace std

int main()

{

int a[]={1,5,8,12,5,-5,32}

int b[]={3,5,1,-3,10}

list<int >set1(a,a+sizeof(a)/sizeof(int))

list<int >set2(b,b+sizeof(b)/sizeof(int))

list<int >result

set1.sort()

. set2.ort()

//交集

set_intersection(set1.begin(),set1.end(),set2.begin(),set2.end(),back_inserter(result))

copy(result.begin(),result.end(),ostream_iterator<int >(cout," "))

cout<<endl

result.clear()

//并集

set_union(set1.begin(),set1.end(),set2.begin(),set2.end(),back_inserter(result))

copy(result.begin(),result.end(),ostream_iterator<int >(cout," "))

cout<<endl

result.clear()

//差集

set_difference(set1.begin(),set1.end(),set2.begin(),set2.end(),back_inserter(result))

copy(result.begin(),result.end(),ostream_iterator<int >(cout," "))

return 0

}

用3个数组,一个保存第一个集合,-个保存另一个集合,再一个保存差集.

然后利用比较对他们进行操作.

单链表实现求两个集合的差集

int Find(LinkList L,datatype x)

{

LNode *p

p=L->next//这里不明白为什么要把L->next赋给p (L->next不就等于是第二个结点的指针了么)

while(p!=NULL&&p->data<x) p=p->next

if(p->data==x) return 1

else return 0

}

LinkList Intersection1(LinkList La,LinkList Lb)

{

LNode *pa,*r

pa=La

while(pa->next!=NULL)

if (Find(Lb,pa->next->data)) pa=pa->next

else {r=pa->next

pa->next=r->next

free(r)

}

return La

}