问答题
试题三(15 分,每空3 分)
阅读下列函数说明和C 代码,将应填入 (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&&knext,及其等价形式
(3)q->next
(4)prep->next
(5)q->next=p