解答题
●试题二
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明2.1】
L为一个带头结点的循环链表。函数deletenode(LinkList L,int c)的功能是删除L中数据域data的值大于c的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。
【函数2.1】
LinkList deletenode(LinkList L,int c)
{
LinkList Lc,p,pre;
pre=L;
p= (1) ;
Lc=(LinkList)malloc(sizeof(ListNode));
Lc->next=Lc;
while(p!=L)
if(p->data>c)
{
(2) ;
(3) ;
Lc->next=p;
p=pre->next;
}
else
{
pre=p;
p=pre->next;
}
return Lc;
}
【说明2.2】
递归函数dec_to_k_2(int n,int k)的功能是将十进制正整数n转换成k(2≤k≤9)进制数,并打印。
【函数2.2】
dec_to_k_2(int n,int k)
{∥将十进制正整数n转换成k(2≤k≤9)进制数
if(n!=0)
{
dec_to_k_2( (4) ,k);
printf("%d", (5) );
}
}
主观题和计算题请自行在草稿纸上作答
题目答案
●试题二【答案】(1)pre->next或L->next(2)pre->next=p->next(3)p->next=Lc->next(4)n/k(5)n%k
您的答案
答案解析
这一题共有两个函数,第一个函数是考查链表的删除和插入操作,第二个函数是考查递归函数。先看第一个函数。(1)空所在语句是对指针p赋初值,通过下面的程序可以判断指针pre所指的结点是指针p所指的结点前驱结点,因此(1)空处应填写"pre->next"或"L->next"。(2)、(3)空所在