问答题

【说明】 已知集合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......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)