首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
设有一个双向链表h,每个结点中除有prior、data和next共3个域外,还有一个访问频度域freq,在链表被起用之前,每个结点中的freq域的值均被初始化为零。每当进行LocateNode(h,x)运算时,令元素值为x的结点中freq域的值加1,并调整
设有一个双向链表h,每个结点中除有prior、data和next共3个域外,还有一个访问频度域freq,在链表被起用之前,每个结点中的freq域的值均被初始化为零。每当进行LocateNode(h,x)运算时,令元素值为x的结点中freq域的值加1,并调整
admin
2013-12-31
28
问题
设有一个双向链表h,每个结点中除有prior、data和next共3个域外,还有一个访问频度域freq,在链表被起用之前,每个结点中的freq域的值均被初始化为零。每当进行LocateNode(h,x)运算时,令元素值为x的结点中freq域的值加1,并调整表中结点的次序,使其按访问频度的递减序列排序,以便使频繁访问的结点总是靠近表头。试写一符合上述要求的LocateNode运算的算法。
选项
答案
算法如下: int LocateNode(DuLlnkList&h,ElemType x){ DuLinkList 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/wSxi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
试述中共十一届三中全会的内容和历史意义。
分析楚汉战争中刘项胜负原因。
对三国鼎立到隋朝重新统一全国这段历史时期的政局,叙述正确的是()。①只有西晋有过短暂的统一②大多数时间是多个政权分立、南北对峙的复杂政局③西晋、北魏、东晋都有过短暂的统一④除三国分立以外,其他时间基本上处于统
帝国前期罗马文化吸收了许多民族的文化成果,进入了兴盛时代。其中自然科学方面最有代表性的人物是()。
()后,辽东局势起了根本变化,明朝在军事上失去主动进攻的力量,而后金则由防御转入进攻。
汉灵帝中平元年(184),()在7州28郡同时俱起,这是中国历史上第一次组织、准备比较严密的农民起义。
西汉末年,将《太初历》调整为《三统历》的是()。
图的D搜索类似于BFS,不同之处在于使用栈代替BFS中的队列,入/出队列的操作作为入/出栈的操作,即当一个顶点的所有邻接结点被搜索后,下一个搜索出发点应该是最近入栈(栈顶)的顶点。(1)用邻接表作为存储结构,写一个D搜索算法;(2)用D搜索方法
将两个长度为N的有序表归并到一个长度为2N的有序表,最少需要比较的次数是(),最多需要比较的次数是()。
42.设有带头结点的循环双链表表示的线性表L=(a1,a2,……,an-1,an)。设计在时间和空间上都尽可能高效的算法,将L改造成L=(a1,a2,……,an,……a4,a2)。要求:(1)给出算法的基本设计思想。(2)根据设计思想,
随机试题
规模经济
A、输卵管通畅试验B、B超检查C、性交后穿透的试验D、腹腔镜检查E、宫腔镜检查子宫内膜息肉可行何种检查()
关于呼吸暂停不正确的观点是
尖锐湿疣的病原体是
哪种成分是粥样硬化所不具备的
钻探取芯法检测混凝土灌注桩成桩质量时,对受检桩的要求,正确的选项是()。
出口胶合板须报检、进口胶合板也须报检。
关于教学目标的表述错误的是()。
了解和研究学生的方法主要有()。
设f(x)在[0,3]上连续,在(0,3)内可导,且2f(0)=∫13f(x)dx,证明:存在ξ∈(0,3),使得f’(ξ)=0.
最新回复
(
0
)