双向链表实现访问频度递减
来源:互联网 发布:买卖域名赚钱 编辑:程序博客网 时间:2024/05/19 12:14
#include <cstdlib>typedef int ElemType;typedef struct DNode//定义双链表节点类型 { ElemType data; ElemType freq; struct DNode *prior,*next; }DLinkList;bool InitList_DuL(DLinkList *&L){ L=(DLinkList *)malloc(sizeof(DLinkList)); if(L==NULL) return false; L->prior=L->next=L; return true;}bool Creat_DuL(DLinkList *&L,ElemType a[],int n){ DLinkList *s; bool k=InitList_DuL(L); if (!k) return false; for(int i=0;i<n;i++) { s=(DLinkList *)malloc(sizeof(DLinkList)); s->data=a[i]; s->next=L; s->prior=L->prior; L->prior->next=s; L->prior=s; } return true;}bool Locate_DuL(DLinkList *L,ElemType e,DLinkList *&p){p=L->prior;while(p!=L && p->data!=e)p=p->prior;if(p==L)return false;else return true;}void Insert_DuL(DLinkList *&L,DLinkList *p,ElemType e1,ElemType e2){ DLinkList *s; s=(DLinkList *)malloc(sizeof(DLinkList)); s->data=e1; s->next=p; s->prior=p->prior; p->prior->next=s; p->prior=s; s=(DLinkList *)malloc(sizeof(DLinkList)); s->data=e2; s->next=p->next; s->prior=p; p->next->prior=s; p->next=s;}void Delete_DuL(DLinkList *&L,DLinkList *p){ p->prior->next=p->next ; p->next->prior=p->prior; free(p);}bool symmetry(DLinkList *L){DLinkList *p,*q;p=L->next;q=L->prior;while(p!=q && q->next!=p)if(p->data==q->data){ p=p->next;q=q->prior;}else return false;return true;}//实现访问频度递减功能bool LocateNode(DLinkList *L,ElemType x){DLinkList *p=L->next,*q;while(p!=NULL&&p->data!=x){p=p->next;if(p==NULL)return false;if(p==NULL)return false;elsep->freq++; q=p->prior;while(q->freq<p->freq){p->prior=q->prior;p->prior->next=p;q->next=p->next;if(q->next!=NULL)q->next->prior=q;p->next=q;q->prior=p;q=p->prior;}return true;}}int main(){ DLinkList *L,*p;ElemType a[]={11,22,33,44,55,66,77};bool b=Creat_DuL(L,a,7);LocateNode(L,33);LocateNode(L,22); LocateNode(L,33);b=symmetry(L);b=Locate_DuL(L,44,p);Insert_DuL(L,p,100,200);Delete_DuL(L,p);}
阅读全文
0 0
- 双向链表实现访问频度递减
- 双向链表L每次访问元素后,元素按访问频度递减次序排列
- 构造双向链表根据访问频度动态调整位置_C++实现
- c实现按访问频度非递增有序的带头节点的双向链表检索关键字
- 双链表按访问频度域freq的值的递减序排列
- 以二叉排序树建立双向链表(两种规则,递增、递减)
- 实现双向链表
- 双向链表实现
- 双向链表实现
- 双向链表实现
- 双向链表实现
- 双向链表实现
- JAVA实现双向链表
- C#实现双向链表
- JAVA实现双向链表
- C#实现双向链表
- 双向链表的实现
- C#实现双向链表
- 了解使用wsimport命令生成webService客户端代码实例
- Android中ANR的监测与定位
- C语言 MPI算法练习
- 1700X + GTX950 跑 CNN卷积神经网络面部表情识别实例代码
- lvm逻辑逻辑卷管理
- 双向链表实现访问频度递减
- Scala中的方法和函数
- java的对象与对象引用
- 线段树——51nod1466 三角巧克力
- 工厂方法模式
- Element UI项目总结
- 基于redis实现购物车
- 包装类、String类
- unity中c#与Objective-C相互调用