数据结构学习之集合(四)

2014-11-24 08:38:10 · 作者: · 浏览: 3
t equal set2\n");
}
ret = set_union(&setu, &set1, &set2);
if( ret != 0 )
return -1;
printf("setu = {");
for( member = list_head(&setu); member != NULL; member = list_next(member) )
{
printf("%d ,", *(int*)list_data(member));
}
printf("}\n");
ret = set_intersection(&seti, &set1, &set2);
if( ret != 0 )
return -1;
printf("seti = {");
for( member = list_head(&seti); member != NULL; member = list_next(member) )
{
printf("%d ,", *(int*)list_data(member));
}
printf("}\n");
ret = set_difference(&setd, &set1, &set2);
if( ret != 0 )
return -1;
printf("setd = {");
for( member = list_head(&setd); member != NULL; member = list_next(member) )
{
printf("%d ,", *(int*)list_data(member));
}
printf("}\n");
set_destroy(&setu);
set_destroy(&seti);
set_destroy(&setd);
set_destroy(&set1);
set_destroy(&set2);
return 0;
}
上面的一个应用主要完成这么几件事:
1 通过集合的插入元素操作,生成两个集合,set1 和 set2,它们的值分别为:set1 = {1,2,3,4,5},set2={1,2,3,4,5,8,9}
2 判断set1是否是set2的子集
3 判断set1是否等于set2
4 set1及set2的交,并,差操作
5 最后是集合的销毁。
上述的compare函数是用户自定义的比较函数,需要将此函数作为指针传递给集合初始化接口set_init()中。
上述代码经过编译、运行的结果如下: