阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。 【说明】 函数DelA_InsB(LinkedList La,LinkedList Lb,int key1,int key2,int len)的功能是:将线性表A中关键码为key1的结点

admin2009-02-15  39

问题 阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。
【说明】
   函数DelA_InsB(LinkedList La,LinkedList Lb,int key1,int key2,int len)的功能是:将线性表A中关键码为key1的结点开始的len个结点,按原顺序移至线性表B中关键码为key2的结点之前,若移动成功,则返回0;否则返回-1。线性表的存储结构为带头结点的单链表,La为表A的头指针,Lb为表B的头指针。单链表结点的类型定义为
   typedef struct node {
       int key;
       struct node * next;
   } *LinkedList;
   【函数】
   int DelA_InsB ( LinkedList La, LinkdeList Lb,int key1,int key2,,int len)
   {  LinkedList p,q,s,prep,pres;
      int k;
       if( ! La->next || ! Lb-> next ||| en <=0)return-1;
      p = La -> next;prep = La;
      while(p&&p- >key != key1) {     /*查找表A中键值为key1的结点*/
        prep = p;p = p -> next;
      }
      if( ! p) return - 1;           /*在表A中不存在键值为key1的结点*/
      q=p;k=1;
      while(q &&(1))}     /*表A中不存在要被删除的len个结点*/
           (2);k++;
      }
      if( ! q)return -1;             /*表A中不存在要被删除的len个结点*/
      s = Lb -> next;(3);
      while(s && s -> key != key2) { /*查找表B中键值为key2的结点*/
          pres =s;s =s->next;
      }
      if( ! s) return - t;           /*表B中不存在键值为key2的结点*/
       (4)=q-> next;       /*将表A中的len个结点删除*/
      q->next=(5);
      pres -> next = p;              /*将len个结点移至表B */
      return 0;
   }

选项

答案(1)k<len (2)q=q->next或q=(*q).next (3)pres=Lb (4)prep->next或(*prep).next (5)s或pres->next或(*pres).next

解析 (1)此处while循环应当循环至k等于len结束,所以应填入k<len。(2)此处语句表示链表前进一个结点,应填入q=q->next或q=(*q).next。(3)此处语句为指针pres赋初值,使他指向s的上一结点。(4)修改指针prep,使prep指向q的下一结点。(5)此处语句为修改指针q,q指向s或者pres的下一结点,达到将A中的len个结点删除的目的。
转载请注明原文地址:https://kaotiyun.com/show/VbjZ777K
0

最新回复(0)