[说明]
设有一个带头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度freq加1,并将该结点前移,链接到现在它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。
[函数]
void Locate(int &x)
<结点类型说明>
*p=first->next;
while(p!=first && (1) )p=p->next;
if(p!=first)
(2) ;
<结点类型说明>
*current=p;
current->prior->next=current->next;
current->next->prior=current->prior;
p=current->prior;
while(p!=first && (3) )p=p->prior;
current->next= (4) ;
curren->prior=p;
p->next->prior=current;
p->next= (5) ;
else printf("sorry.Not find! /n");
题库:初级程序员
类型:填空题
时间:2017-07-03 12:01:10
免费下载:《填空集》Word试卷
[说明]
设有一个带头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度freq加1,并将该结点前移,链接到现在它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。
[函数]
void Locate(int &x)
<结点类型说明>
*p=first->next;
while(p!=first && (1) )p=p->next;
if(p!=first)
(2) ;
<结点类型说明>
*current=p;
current->prior->next=current->next;
current->next->prior=current->prior;
p=current->prior;
while(p!=first && (3) )p=p->prior;
current->next= (4) ;
curren->prior=p;
p->next->prior=current;
p->next= (5) ;
else printf("sorry.Not find! /n");
本题关键词:横向指向性,纵向指向性,结点法,铰结点,双向截断指数波,T型结点,手指的解剖特点,个体指数,补体结合点,声源指向性;