集合交差并三种操作的C实现
head = (*s)-> (*s)-> while(head-> Node_t *head = s-> if(get_setlength(s1) > if(s1->head == NULL || s2-> if(get_setlength(s1) > if(s1-> /********************************************* // assert(*s); head = (*s)->head; while(head != NULL) temp = NULL; 最后是我的测试程序: /************************************************ int i = 0; if(!create_set(&sets2, j)) sets3 = OrSets(sets1,sets2); sets3 = OrSets(sets2,sets1); delete_set(&sets3); delete_set(&sets3); delete_set(&sets3); delete_set(&sets3); delete_set(&sets1); 实验效果: 总结: 该实现并没有考虑性能方面,基本上实现了集合的简单操作。后面有时间再想想如何优化查找和删除操作。
删除一个集合
参数: 指向集合指针的指针
返回值: void
**********************************************/
void delete_set(Set **s)
{
Node_t *head = NULL;
Node_t *temp = NULL;
if(*s == NULL)
return;
{
temp = head;
head = head->next;
free(temp);
(*s)->size --;
}
free(*s);
*s = NULL;
}
主函数
完成各个函数的测试工作
最后需要完成内存的释放
************************************************/
int main()
{
Set* sets1 = NULL;
Set* sets2 = NULL;
Set* sets3 = NULL;
Set* sets4 = NULL;
int j = 0;
for(i = 0; i < 10; ++ i)
{
if(!create_set(&sets1, i+10))
break;
j = i + 10 - 5;
break;
}
printf("Set1 : ");
print_set(sets1);
printf("Set2 : ");
print_set(sets2);
printf("Set1 + Set2: ");
print_set(sets3);
printf("Set2 + Set1: ");
print_set(sets3);
sets3 = AndSets(sets1,sets2);
printf("Set1 * Set2: ");
print_set(sets3);
sets3 = AndSets(sets2,sets1);
printf("Set2 * Set1: ");
print_set(sets3);
sets3 = XorSets(sets1,sets2);
printf("Set1 - Set2: ");
print_set(sets3);
// creat_nullset(&sets4);
sets3 = XorSets(sets2,sets1);
printf("Set2 - Set1: ");
print_set(sets3);
delete_set(&sets2);
delete_set(&sets3);
delete_set(&sets4);
return 0;
}
集合交差三种操作C实 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)