.
m->coef=k->coef;
k=k->next;
} /* 对第二个集合中的元素进行分析 */
} /* 求A∪B */
该函数采取了用新集合存储两集合并后的新集合,利用一个for循环来消除新集合中相同的元素,是其在屏幕上只显示一次。 }
5.5交运算函数
void Subset(struct set *&p,struct set *&q,struct set *&r) {
struct set *k,*m,*n;
r=(struct set *)malloc(sizeof(set)); /* 申请结点r */
.
.
r->next=NULL;
n=q->next;
for(;n;) /* 比较p和q链表中的元素,相同的元素存入链表r中 */ {
m=p->next;
for(;(m->coef!=n->coef)&&m->next;)
{
m=m->next;
}
if(m->coef==n->coef)
{
k=(struct set *)malloc(sizeof(set));
k->next=r->next;
.
.
r->next=k;
k->coef=m->coef;
n=n->next; }
} /* 求A∩B */
该函数用于实现集合的并运算,利用for嵌套实现两链表中数据的比较,
输出两链表中相同的元素。
}
5.6 差函数
void Intset(struct set *&p,struct set *&q,struct set *&r) {
struct set *k,*m,*n;
r=(struct set *)malloc(sizeof(set));
.
.
r->next=NULL;
m=p->next;
for(;m;) {
n=q->next;
for(;(m->coef!=n->coef)&&n->next;)
{
n=n->next;
}
if(!n->next&&(m->coef!=n->coef)) /* 比较链表p与q ,找出p中不同
于q的元素存入链表r中 */
k=(struct set *)malloc(sizeof(set));
{
.
.
k->next=r->next;
r->next=k;
k->coef=m->coef;
m=m->next; }
} /* 求A-B */
该函数用于实现集合的差运算,利用链表中的数据域进行判断。输出不同于被减集合中不存在的元素。
}
六 运行结果分析
.