函数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);}

函数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);

}


相关考题:

设A、B、C、D为任意集合,下面命题中为假的是A.A-B=B当且仅当A=B=фB.C.A-(B∪C)=(A-B)∩(A-C)D. 设A、B、C、D为任意集合,下面命题中为假的是A.A-B=B当且仅当A=B=фB.C.A-(B∪C)=(A-B)∩(A-C)D.

[说明]已知包含头节点(不存储元素)的单链表的元素已经按照非递减方式排序,函数compress(NODE *head)的功能是去掉其中重复的元素,使得链表中的元素互不相同。处理过程中,当元素重复出现时,保留元素第一次出现所在的节点。图8-29(a)、(b)是经函数compress( )处理前后的链表结构示例图。链表的节点类型定义如下:typedef struct Node {int data;struct Node *next;}NODE;[C语言函数]void compress(NODE *head){NODE *ptr, *q;ptr= (1) ; /*取得第一个元素节点的指针*/while( (2) ptr->next) {q=ptr ->next;while(q (3) ){/*处理重复元素*/(4) =q ->next;free(q);q=ptr->next;}(5) =ptr->next;} /*end of while*/} /*end of compress*/

下列各命题中真值为假的命题有()A.2+2=4当且仅当3是奇数B.2+2=4当且仅当3不是奇数C.2+2≠4当且仅当3是奇数D.2+2≠4当且仅当3不是奇数

C++中,当两个或者两个以上的函数共用一个函数名时,且保证但函数的形参表互不相同,称为函数【1】

下列说法错误的是?A.无向图是连通图当且仅当它的可达矩阵的所有元素均为1。B.有向图是强连通图,当且仅当它的可达矩阵的所有元素均为1。C.有向图是单侧连通图,当且仅当可达矩阵的所有元素均为1。D.有向图是弱连通图,当且仅当以邻接矩阵与邻接矩阵的转置的并集作为邻接矩阵求得的可达矩阵中的所有元素均为1。

下列各命题中真值为假的命题有?A.2+2=4当且仅当3是奇数B.2+2=4当且仅当3不是奇数C.2+2≠4当且仅当3是奇数D.2+2≠4当且仅当3不是奇数

下列说法正确的是()A.A与B为两个相等的集合,从A到B的函数是单射当且仅当它是一个满射。B.函数的逆关系不一定都是函数。C.只有双射函数是可逆的,其逆函数也是双射的。D.函数的复合不一定是函数。

设X和Y为两个有穷集合,|X|=|Y|当且仅当存在从X到Y的双射。

下列各命题中真值为真的命题有A.2+2=4当且仅当3是奇数B.2+2=4当且仅当3不是奇数C.2+2≠4当且仅当3是奇数D.2+2≠4当且仅当3不是奇数