shu(n,b,-1,k);//右孩子}else{printf("{");for(i=0;i<k;i++){if(b->data[i]!=-1)printf("%d",b->data[i]);}printf("}");printf("\n");}return0;}3.函数的调用关系图union_set()difference_set()occur()Mainexit(0)power_set()Shu()?图1.14.调试分析1输入集合数据的时候必须要一个一个输,不能依次输入很多,否则会引起错误图1.2算法的时间复杂度O(n^2)。5.测试结果1图1.3为并集图1.32图1.4为交集图1.43图1.5为差集图1.54图1.6为幂集图1.66.源程序(带注释)#include<stdio.h>#include<stdlib.h>#defineMAX100typedefstruct/*根节点结构体(幂集使用)*/{intdata[MAX];intlength;}root;intc[2][MAX];/*c构造数据池*/intcheck(inta[MAX],intn)/*集合重复元素处理*/{inti,j,k=0;for(i=0;i<=n;i++){for(j=i+1;j<=n;j++){if((a[i]==a[j])&&(a[i]!=-1)){a[j]=-1;}}}j=0;for(i=0;i<n;i++)/*采用类似于冒泡排序的算法,每次删除一个元素,删除n次*/{if(a[i]==-1){for(j=i;j<n;j++){a[j]=a[j+1];}i--;/*这里因为移动位置,所以i不应该自增*/k++;}}n=n-k;returnn;}intshu(intn,root*b,intd,intk)/*递归建树*/{inti;b->data[k]=d;b->length++;k++;