typedef enum{LINK,THERAD}flag;
typedef char DataType;
typedef struct node{
DataType data;
flag ltag,rtag;
struct node * lchild, * rchild;
}BinNode;
BinNode * FS(BinNode *p)
{
if(p->ltag==LINK)
return p->lchild;
else
return p->rchild;
}
五、算法填充题 (本大题共1小题,18分)
28.下面函数diff的功能是:根据两个由整数(都大于-32768)按升序构成的单链表L1和L2(分别由A,B指向)构造一个单链表L3(由*r指向),要求L3中的所有整数都是L1并且不是L2中的整数,还要求L3中的所有整数都两两不等。在空缺处填上适当字句,使其能正确工作。
#include
typedef struct node {
int d;
struct node *next
} Node;
void diff (Node *A, Node *B, Node **r)
{
int lastnum;
Node * p;
*r=NULL;
if(!A)return;
while(_____________)
if (A->d < B->d)
_____________;
p=(Node*) malloc (sizeof(Node));
p->d=lastnum;
p->next=*r,_____________;
do A=A->next;while(_____________);
}
else if (A->d > B->d)
B=B->next
else {
_____________;lastnum=A->d;
while (A&&A->d==lastnum)A=A->next;
}
while (A) {
lastnum=A->d;
p=(Node*) malloc (sizeof(Node));
p->d=lastnum;
_____________,*r=p;
while (A&&A->d==lastnum) A=A->next;
}
}