万能百科  > 所属分类  > 

阅读下列函数说明和C函数,将应填入______处的语句写在答题纸的对应栏内。 [函数6说明] 函数DelA_I

阅读下列函数说明和C函数,将应填入______处的语句写在答题纸的对应栏内。

[函数6说明]

函数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;

[函数6]

int DelA InsB(LinkedList La,LinkedList Lb,int key1,int key2,int len)

{ LinkedListp,q,s,prep,pres;

int k;

if(! La->next‖! Lb->next‖->next‖len<=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 && s->key!=key2){ / * 查找表B中键值为key2的结点 * /

pres=s;s=s->next;

}

if(! s)return-1; / * 表B中不存在键值为key2的结点 * /

(4)=q->next; / * 将表A中的len个结点删除 * /

q->next=(5);

pres->next=p; / * 将len个结点移至表B * /

return 0;

}

正确答案:

(1)klen(2)q=q->next(3)pres=Lb(4)prep->next(5)s或pres->next(1)klen(2)q=q->next(3)pres=Lb(4)prep->next(5)s或pres->next 解析:本题是在链表插入和删除单个结点的基础上进行扩展,一次性插入多个结点和删除多个结点其原理和插入、删除一个结点的运算是一致的。首先在A链表中查找键值为key1的结点,使用了下列循环: While(p&&p->key!=key1) {/ * 查找表A中键值为key

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。

标签