对链表中的数据项进行访问时频度加1,保证频繁访问的结点总靠近表头。
输入输出样例:1组
#1
- 样例输入:
5 //表中元素个数 1 2 3 4 5 //表中元素内容 3 //一共locate3次 3 //第一次Locate 3 3 //第二次Locate 3 4 //第三次Locate 4
- 样例输出:
1 2 3 4 5 //原表中元素输出 3 1 2 4 5 //第一次Locate 3 后的变化 3 1 2 4 5 //第二次Locate 3 后的变化 3 4 1 2 5 //第三次Locate 4 后的变化
这里注意我们需要使用二级指针,否则我们进行的是值传递
#include <stdio.h>
#include <stdlib.h>
#define max 10
typedef struct lnode
{
int data;
struct lnode *next;
struct lnode *prior;
int freq;
} pnode, *DLinklist;
pnode *creatnode(int data)//创建新结点
{
pnode* node = (pnode*)malloc(sizeof(pnode));
node->data = data;
node->prior = node->next = NULL;
node->freq = 0;
return node;
}
pnode *insert(DLinklist *s, int data) //在表尾插入&#