问答题
【说明】
已知集合A和B的元素分别用不含头结点的单链表存储,函数Difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10, 20,15,25,30},集合B={5,15,35,25},如图(a)所示,运算完成后的结果如图(b)所示。
链表结点的结构类型定义如下:
typedef struct Node{
ElemType elem;
struct Node *next;
}NodeType;
【C函数】
void Difference(NodeType **LA,NodeType *LB)
{
NodeType *pa, *pb, *pre, *q;
pre=NULL;
(1) ;
while (pa) {
pb=LB;
while( (2) )
pb=pb->next;
if( (3) ) {
if(!pre)
*LA= (4) ;
else
(5) =pa->next;
q = pa;
pa=pa->next;
free(q);
}
else {
(6) ;
pa=pa->next;
}
}
}
【参考答案】
(1)pa=*LA (2)pb && pb->elem!=pa->elem,或其等价表示 (3)pb或pb!=NULL......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)