阅读下列函数说明和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!=frist&&(1))P=P->next; if(p! =first) /*中存在x*/ {(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); /*插入在P之后*? Current -> prior = P; P -> next -> prior = current; P->next=(5); } else printf('Sorry. Not find! /n'); /*没找到*/ }