栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 学历 > 资格考试

[填空题] L为一个带头结点的循环链表。函数deletenode(LinkList L, int c)的功能是删除L中数据域data的值大于c的所有结点,并由这些结点组建成一个新的带头结点的循环链

[填空题]   L为一个带头结点的循环链表。函数deletenode(LinkList L, int c)的功能是删除L中数据域data的值大于c的所有结点,并由这些结点组建成一个新的带头结点的循环链

[填空题]【说明2.1】
L为一个带头结点的循环链表。函数deletenode(linkListL,intc)的功能是删除L中数据域data的值大于c的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。
【函数2.1】
linkListd eletenode(linkListL,intc)

linkListLc,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;
returnLc;
【说明2.2】
递归函数dec_to_k_2(intn,intk)的功能是将十进制正整数n转换成k<2≤k≤9)进制数,并打印。
【函数2.2】
dec_to_k_2(intn,intk)if(n!=0)dec_to_k_2((4),k);
printf("%d",(5));
&l

参考答案:

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)空所在的语句块是处理当指针p所指的结点是一个大于c的结点,则将该结点从链表L中删除,再将它插入到链表Lc中。由指针pre和指针p的关系,从链表中删除指针p所指结点很简单,只需将指针pre的next域修改为指针p的next域即可,因此(2)空处应填写“pre->next=P->next”或其等价形式。将指针p所指的结点插入到链表Lc的过程是,先将指针P的next域指向指针Lc的next所指的结点,再将指针Lc的next指向指针p所指的结点。因此(3)空处应填写“p->next=Lc->next”或其等价形式。再来分析第二个函数。将十进制正整数转换成k进制数,采用除k取余法。最开始得到余数作为k进制数的最低位,最后得到的余数作为k进制数的最高位。用n不断地除以k,直到商为0。转换所得到的k进制数是从低位开始生成,而输出则应该从高位开始。根据这一特点,用递归法求解时,先应将n/k转换成k进制,再输出n%k。因此(4)空、(5)空处分别填写“n/k”、“n%k。当然这个问题也可以通过非递归的算法来完成,这样在转换过程中,需要一个栈来暂存n除以k所得到的各位余数。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/xueli/94811.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号