1 / 16
文档名称:

动态分区分配 最佳 最坏 适应算法.doc

格式:doc   页数:16页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

动态分区分配 最佳 最坏 适应算法.doc

上传人:825790901 2016/6/16 文件大小:0 KB

下载得到文件列表

动态分区分配 最佳 最坏 适应算法.doc

文档介绍

文档介绍:我伟大的母校课程设计报告书实践课题: 动态分区分配姓名: 路人甲学号: 20 XXXXXX 指导老师: 路人乙学院: 计算及科学与技术学院课程设计实践时间 ~ : : : A lloc Best_fit Worst_fit F ree S how M ain #include<> #include<> #include<> #define Free 0 // 空闲状态#define Busy 1 // 已用状态#define OK 1 // 完成#define ERROR 0 // 出错#define MAX_length 100 // 最大内存空间为 100M typedef int Status; int flag;// 标志 typedef struct freearea// 定义一个空闲区说明表结构{ long size; // 分区大小 long address; // 分区地址 int state; // 状态}ElemType;// 元素类型// 线性表的双向链表存储结构 typedef struct DuLNode// 结构指针{ ElemType data; struct DuLNode *prior; // 前趋指针 struct DuLNode *next; // 后继指针} DuLNode,*DuLinkList;// 指针链表 DuLinkList block_first; // 头结点 DuLinkList block_last; // 尾结点 Status alloc(int);// 内存分配 Status free(int); // 内存回收 Status Best_fit(int); // 最佳适应算法 Status Worst_fit(int);// 最差适应算法 void show();// 查看分配 Status Initblock();// 开创空间表 Status Initblock()// 开创带头结点的内存空间链表{ block_first=(DuLinkList)malloc(sizeof(DuLNode)); block_last=(DuLinkList)malloc(sizeof(DuLNode)); block_first->prior=NULL; block_first->next=block_last; block_last->prior=block_first; block_last->next=NULL; block_last->=0; block_last->=MAX_length; block_last->=Free; return OK; } // 分配主存 Status alloc(int ch) { int request = 0; cout<<" 请输入需要分配的主存大小( 单位:M) : "; cin>>request; if(request<0 ||request==0) { cout<<" 分配大小不合适,请重试! "<<endl; return ERROR; } if(ch==1) // 选择最佳适应算法{ if(Best_fit(request)==OK) cout<<" 分配成功! "<<endl; else cout<<" 内存不足,分配失败! "<<endl; return OK; } if(ch==2) // 选择最差适应算法{ if(Worst_fit(request)==OK) cout<<" 分配成功! "<<endl; else cout<<" 内存不足,分配失败! "<<endl; return OK; }} // 最佳适应算法 Status Best_fit(int request) { int ch; // 记录最小剩余空间 DuLinkList temp=(DuLinkList)malloc(sizeof(DuLNode));// 申请内存空间 temp->=request; temp->=Busy; DuLNode *p=block_first->next; DuLNode *q=NULL; // 记录最佳插入位置 while(p) // 初始化最小空间和最佳位置{ if(p->==Free && (p->>=request) ) { if(q==NULL) { q=p; ch=p->-request; } el