题库 题库

【简答题】

试题三(15分,每空3分)
  阅读下列说明和流程图,将应填入__(n)__的字句写在答题纸的对应栏内。
  【函数说明]
  函数movetoend(LinkedList La int i)的功能时:将线性表示A的第I个元素移到表尾。若移动成功,则返回0,否则返回-1。线性表A采用带头结点的单链表表示,La为表A的头指针,如下图所示。
    
链表结点的类型定义为:
  typedef struct node {   
   int key;
   struct node *next;
  }*LinkedList
  【函数]
  int movetoend(LinkedList La,int i)
  {
   LinkedList p ,q,prep;
   Int k=1;
   P=La->next;prep=La;
   While(__(1)__){      /*查找第I个元素并使指针p指向该结点*/
    Prep=p; p=p->next;k++
   }
   if (!p||k>i)return -1;
   if (__(2)__)        /*第I个元素结点已经是表尾结点,则无需移动*/
   return 0;
   q=p;
   while(__(3)__)q=q-﹥next; /*查找表尾并使q指向表尾结点*/
   __(4)__=p->next;
   p->next=NULL;
   __(5)__;
   return 0;
  }

参考答案

(1)p && k<i,及其等价形式
(2)!p->next,及其等价形式
(3)q->next
(4)prep->next
(5)q->next=p

相关试题