问答题

试题六
阅读下列函数说明和C函数,将应填入___(n)___处的语句写在答题纸的对应栏内。
[函数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)k<len
(2)q=q->next
(3)pres=Lb
(4)prep->next
(5)s或pres->next

热门 试题

问答题
试题四 阅读以下说明和C程序代码,将应填入___(n)___处的语句写在答题纸的对应栏内。 [说明] 函数MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数n转换成 B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下: # define MAXSIZE 32 typedef struct int * elem; * 栈的存储区 * int max; * 栈的容量,即栈中最多能存放的元素个数 * int top; * 栈顶指针 * Stack; [C代码] int InitStack(Stack * S,int n) * 创建容量为n的空栈 * S->elem=(int *)malloc(n * sizeof(int)); if(S->elem==NULL)return-1; S->max=n; (1) =O;return 0; int Push(Stack * S,int item) * 将整数item压入栈顶 * if(S->top==S->max) printf(“Stack is full! n”);return-1; (2) =item;return 0; int StackEmpty(StackS) return (! S.top) 1:0; * 判断栈是否为空 * int Pop(Stack *S ) * 栈顶元素出栈 * if(! S->top)printf(“Pop an empty stack! n”);return-1; return (3) ; void MultibaseOutput(long n,int B) int m;StackS; if (InitStack(&S,MAXSIZE))printf(“Failure! n”);return; do if(Push(&S, (4) ))printf(“Failure! n”);return; n= (5) ; while(n!=0); while(! StackEmpty(S)) * 输出B进制的数 * m=Pop(&S); if(m<10)printf(“%d”,m); * 小于10,输出数字 * else printf(“%c”,m+55); * 大于或等于10,输出相应的字符 * printf(“ n”);