阅读下列函数说明和C代码,将应填进(n)处的字句写在答题纸的对应栏内。
【说明】设有一个带表头结点的双向循环链表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;
current->prior = p;
p->next->prior = current;
p->next = 5;
}
else
printf(“Sorry. Not find!\n”); \*没找到*\
}