问答题
设有一个双链表L,每个结点中除有prior、data和next这3个域外,还有一个访问频度域freq,在链表被启用之前,其值均初始化为零。每当在链表进行一次LocateNode(L,x)运算时,令元素值为x的结点中freq域的值加1,并调整表中结点的次序,使其按访问频度的递减排列,以便使频繁访问的结点总是靠近表头。试写一符合上述要求的LocateNode运算的算法。
【参考答案】
正确答案:typedef struct DuLNode{ ElemType data; int freq; struct DuLNode*pred,*next; }*DList; DList locate(DList L,ElemType x){ //L是带头结点的按访问频度递减的双向链表 DLis......
(↓↓↓ 点击‘点击查看答案’看完整答案 ↓↓↓)