下面函数diff的功能是:根据两个由整数(都大于-32768)按升序构成的单链表L1和L2(分别由A,B指向)构造一个单链表L3(由*r指向),要求L3中的所有整数都是L1并且不是L2中的整数,还要求L3中的所有整数都两两不等。在空缺处填上适当字句,使其能正确工作。
     #include <malloc.h>
     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;
       }
     }