资源简介
用C语言编写的最坏适应算法,大家快下载吧。
代码片段和文件信息
#include
#include
#define Free 0 //空闲状态
#define Busy 1 //已用状态
#define OK 1 //完成
#define ERROR 0 //出错
#define MAX_length 640 //最大内存空间为KB
typedef int Status;
typedef struct freearea//定义一个空闲区说明表结构
{ int ID; //分区号
long size; //分区大小
long address; //分区地址
int state; //状态
}ElemType;
//---------- 线性表的双向链表存储结构 ------------
typedef struct DuLNode //double linked list
{ ElemType data;
struct DuLNode *prior; //前趋指针
struct DuLNode *next; //后继指针
}DuLNode*DulinkList;
DulinkList block_first; //头结点
DulinkList block_last; //尾结点
Status alloc(int);//内存分配
Status free(int); //内存回收
Status Worst_fit(intint); //最坏适应算法
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->data.address=0;
block_last->data.size=MAX_length;
block_last->data.ID=0;
block_last->data.state=Free;
return OK;
}
//----------------------- 分配主存-------------------------
Status alloc()
{
int IDrequest;
cout<<“请输入作业(分区号):“;
cin>>ID;
cout<<“请输入需要分配的主存大小(单位:KB):“;
cin>>request;
if(request<0 ||request==0)
{
cout<<“分配大小不合适,请重试!“< return ERROR;
}
if(Worst_fit(IDrequest)==OK) cout<<“分配成功!“< else cout<<“内存不足,分配失败!“<
}
//-------------------- 最坏适应算法 ------------------------
Status Worst_fit(int IDint request)
{
int ch; //记录最大剩余空间
DulinkList temp=(DulinkList)malloc(sizeof(DuLNode));
temp->data.ID=ID;
temp->data.size=request;
temp->data.state=Busy;
DuLNode *p=block_first->next;
DuLNode *q=NULL; //记录最佳插入位置
while(p) //初始化最大空间和最佳位置
{
if(p->data.state==Free &&
(p->data.size>request || p->data.size==request) )
{ q=p;
ch=p->data.size-request;
break;
}
p=p->next;
}
while(p)
{
if(p->data.state==Free && p->data.size>request)
{//空闲块大于分配需求
if(p->data.size-request>ch)//剩余空间比初值还大
{
ch=p->data.size-request;//更新剩余最小值
q=p;//更新最佳位置指向
}
}
if(p->data.state==Free && p->data.size==request)
{//空闲块大小恰好合适
p->data.ID=ID;
p->data.state=Busy;
return OK;
break;
}
p=p->next;
}
i
相关资源
- 成熟 免费adpcm音频C语言 编解码
- 51单片机产生PWM的程序和怎样控制直流
- C语言程序设计学生成绩管理系统
- c语言程序设计关于教师工作量管理系
- AES详细源码C语言实现带注释
- 城市最短路径查询C语言
- c语言课程设计通讯录管理系统设计报
- 无线遥控锁解码
- 《嵌入式Linux C语言应用程序设计》读
- 数字图像处理 邻域平均法 C语言
- 谭浩强 C语言程序设计第三版视频教程
- 西工大 2011年 C语言 POJ实验习题
- C语言期末考试全部知识点复习资料
- c语言写的图像插值算法
- 选区划分C语言编写
- 条码CODE128C语言算法
- C语言 华容道源代码
- 基于多线程的Linux聊天室系统
- 算法与数据结构_C语言版_答案(1-8章
- 全国计算机二级c语言历年真题完整版
- AES算法的C语言版本
- 模拟 数据库 C语言 基本功能
- 基于OPENGL的C语言大作业
- 泛型链表——C语言实现
- C语言实现三种闭包算法传递,自反,
- myshell:操作系统编程-自己用C语言写
- 七参数坐标转换C语言代码
- c语言winsock 实现简单域名解析(DNS
- c语言项目五子棋对战局域网.rar
- C语言大作业西北工业大学
评论
共有 条评论