网友您好, 请在下方输入框内输入要搜索的题目:
函数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);
}
参考答案