首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
设有一个双向链表h,每个结点中除有prior,data和next三个域外,还有一个访问频度域freq,在链表被起用之前,每个结点中的freq域都被初始化为零。每当进行LocateNode(h,x)运算时,令元素值为x的结点中freq域中的值加一,并调整表中
设有一个双向链表h,每个结点中除有prior,data和next三个域外,还有一个访问频度域freq,在链表被起用之前,每个结点中的freq域都被初始化为零。每当进行LocateNode(h,x)运算时,令元素值为x的结点中freq域中的值加一,并调整表中
admin
2012-06-21
88
问题
设有一个双向链表h,每个结点中除有prior,data和next三个域外,还有一个访问频度域freq,在链表被起用之前,每个结点中的freq域都被初始化为零。每当进行LocateNode(h,x)运算时,令元素值为x的结点中freq域中的值加一,并调整表中结点的次序,使其按访问频度的递减序列排序,以便使被频繁访问的结点总靠近表头,试写一符合上述要求的LocateNode运算的算法。
选项
答案
在DLinkList类型的定义中添加freq域(int类型),给该域初始化为0。在每次查找到一个结点*p时,使其freq域增1,再在*p结点的前面找到一个结点*q,它或是头结点或是满足q->freq>=p->freq,然后删除*p结点,使其插入到*q结点之后。 算法描述如下: int LocateNode(DLinkList*h,ElemType x) { DLinkList *p=h->next,*q; while(p!=NULL&&p->data!=x) p=p->next; //找data域值为x的结点*p if(p==NULL) //未找到这样的结点 return 0: }else{ //找到这样的结点*p p->freq++; //频度增1 q=q->prior; //*q为*p前驱结点 if(q!=h) //若’p为第一个数据结点,则不移动 { while(q!=h&&q->freq<p->freq)//找到*q结点,使q->freq>=p->freq q=q->prior; p->prior->next=p->next; //先删除*p结点 if(p->>next!=NULL) p->next->prior=p->prior; p->next=q->next; //将*p结点插入到*q结点之后 if(q->next!=NULL) q->next->prior=p; q->next=p; p->prior=q; } return 1; } }
解析
转载请注明原文地址:https://kaotiyun.com/show/Y8xi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
1979年4月,中共中央召开工作会议,讨论经济问题。李先念作了《关于国民经济调整问题》的讲话,总结实行经济改革的经验,提出的“新八字方针”是()。
20世纪50年代到70年代初,西欧国家通过有效的社会经济政策,维持了经济相对稳定和持续发展。这些政策主要包括()①加强对经济的宏观管理②废除生产关系中封建落后因素③发展高科技和新兴产业④进行社会改革,稳定社会秩序
()是一部上起传说中的黄帝,下迄汉武帝时期的中国通史,是中国历史上第一部内容完整、结构周密的历史著作。
根据1931年的威斯敏斯特法,英国()。
1945年,在美国国务院举行了布雷顿森林协定签字仪式,宣告了()和()的正式成立。这是两个在业务上保持密切联系的姊妹机构,总部均设在华盛顿。
利玛窦与李之藻合译的()一书,介绍了西方数学中的算术知识,尤为可贵的是,其传入了中国所没有的西洋笔算法。
在1957年反右派运动严重扩大化过程中采取的错误斗争方式包括()。
科举是一种读书、应考、任官三位一体的选官方法,其中的进士科始创于()。
三国时期,魏、蜀、吴灭亡的先后顺序是()。
随机试题
病原物传播的主要方式是:
“国家三要素说”界定国家的三个方面是领土、居民和()。
携带脂肪酰CoA通过线粒体内膜的载体是
患者,男,54岁。患肝炎后肝硬化10年,近1周来病情加重,腹水量增加,腹胀明显,并出现呼吸困难、睡眠障碍和意识错乱。为减少腹水,下列最佳的治疗药物是
1959年戴维斯(Davies)在其对开普敦的研究中,提出了()的概念。
在业主设备工程项目的各个过程中,物流运行的基本准则包括()。
下述现金流量中,属于筹资活动流出的是()。
国学大师说,儒家尚正气,道家尚清气,佛家尚和气,请你谈谈对这句话的理解。
某工厂业务处理系统的部分需求为:客户将订货信息填入订货单,销售部员工查询库存管理系统获得商品的库存,并检查订货单;如果订货单符合系统的要求,则将批准信息填入批准表,将发货信息填入发货单;如果不符合要求,则将拒绝信息填入拒绝表。对于检查订货单,需要根据客户的
给定程序modil.c的主函数中,将a、b、c三个结点链成一个单向链表,并给各结点的数据域赋值,函数fun()的作用是:累加链表结点数据域中的数据作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增
最新回复
(
0
)