函数Node *difference(A,B)用于求两个集合之差C=A-B,即当且仅当e是A中的一个元素,但不是B中的元

11 查阅

函数Node *difference(A,B)用于求两个集合之差C=A-B,即当且仅当e是A中的一个元素,但不是B中的元素时,e是C中的元素。集合用有序链表实现,用一个空链表表示一个空集合,表示非空集合的链表根据元素之间按递增排列。执行C=A-B之后,表示集合A和B的链表不变,若结果集合C非空,则表示其链表根据元素之值按递增排列。函数append()用于在链表中添加节点。

[C函数]

typedef struct node{

int element;

struct node *link;

}Node;

Node *A,*B,*C;

Node *append(last,e)

Node *last;

int e;

{last->link=(Node *)malloc(sizeof(Node));

last->link->element=e;

return(last->link);

}

Node *difference(A,B)

Node *A,*B;

{ Node *c,*last;

C=last=(Node *)malloc(sizeof(Node));

while( (1) )

if(A->element<B->element){

last=append(last,A->element);

A=A->link:

}

else if( (2) ){

A:A->link;

B:B->link;

}

elSe

(3) ;

while( (4) ){

last=append(last,A->element);

A=A->link:

}

(5) ;

last=c;

c=c->link;

free(last);

return(c);

}

参考答案:

(1) B->link (2) A->element==B->element (3) B=B->link (4) A>link!=NULL (5) last->link=NULL(1) B->link (2) A->element==B->element (3) B=B->link (4) A>link!=NULL (5) last->link=NULL 解析:本题用链表表示集合,通过比较链表的元素值判断集合的元素之间的关系。第一个while循环的条件是链表

软考初级