云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 广工 操作系统课程设计 最佳适应算法、最坏适应算法、循环首次适应算法

广工 操作系统课程设计 最佳适应算法、最坏适应算法、循环首次适应算法

  • 62 次阅读
  • 3 次下载
  • 2025/6/21 0:49:52

动态分区分配算法仿真,循环首次适应算法、最佳适应算法、最坏适应算法

#include

#include//在输入输出流中用到控制符

#include//用到了SetConsoleTextAttribute函数 #define minsize 2//事先规定的不再切割的剩余分区大小为2 using namespace std; struct Node {

int name; int start; int size; int state; Node *pre; Node *next; };

typedef struct Dlinklist {

Node *head; }Dlist;

//=================== Dlist pro,fre;

int memory,name,size,fit;

Node *temp=NULL;//temp是NestFit算法中的起始查寻指针 //===================

void initDlist(Dlist &L)//创建带有头结点的双向链表 {

L.head=new Node;

L.head->next=L.head->pre=NULL; }

void MemoryInit()//初始化两个链表 {

initDlist(pro); //process链表 initDlist(fre); //free block链表 Node *p=new Node; p->name=0; p->start=0; p->state=0; p->size=memory;

p->next=NULL;//这里曾错写成p->pre.............. p->pre=fre.head;//这里曾漏写 fre.head->next=p; }

int getLength(Dlist &L)//返回链表的长度,即元素的个数

{

int m=0;

Node *p=L.head->next; while(p!=NULL) {

m++;

p=p->next; }

return m; }

void arrangeSmaller(Dlist &L)//冒泡排序,链表按size进行排序,从小到大 {

int length=getLength(L);

for(int i=0; i=2的时候才排序 {

Node *p=L.head->next; Node *q=p->next; int

a,b,c,d;//==========================================================================

for(int j=0; j

if(p->size>q->size) //交换位置,如果前面的大于后面的,使小的上浮,如果两个相等,则还是原来在前的保持在前 {

a=p->size;

p->size=q->size; q->size=a; b=p->name;

p->name=q->name; q->name=b; c=p->start;

p->start=q->start; q->start=c;

d=p->state;//==========================================================================

p->state=q->state; q->state=d; }

p=p->next; q=p->next; } }

}

void arrangeBigger(Dlist &L)//链表按size进行排序,从大到小 {

int length=getLength(L);

for(int i=0; i

Node *p=L.head->next; Node *q=p->next; int a,b,c,d;

for(int j=0; j

if(p->sizesize) {

a=p->size;

p->size=q->size; q->size=a; b=p->name;

p->name=q->name; q->name=b; c=p->start;

p->start=q->start; q->start=c;

d=p->state;//==========================================================================

p->state=q->state; q->state=d; }

p=p->next; q=p->next; } } }

void arrangeStart(Dlist &L)//链表按start递增排序 {

int length=getLength(L);

for(int i=0; i

Node *p=L.head->next; Node *q=p->next; int a,b,c,d;

for(int j=0; j

if(p->start>q->start)

{

a=p->size;

p->size=q->size; q->size=a; b=p->name;

p->name=q->name; q->name=b; c=p->start;

p->start=q->start; q->start=c;

d=p->state;//==========================================================================

p->state=q->state; q->state=d; }

p=p->next; q=p->next; } } }

void DlistInsert(Dlist &L,Node e) //在头结点之后插入元素,即L.head->next指向e {

Node *p=new Node; p->name=e.name; p->size=e.size; p->start=e.start; p->state=e.state;

if(L.head->next!=NULL)//这是个值得注意的地方,L.head->next==NULL,则没有指针L.head->next->pre,如果这里不加判断的话,会出错 L.head->next->pre=p; p->next=L.head->next; p->pre=L.head; L.head->next=p;

//双向链表,插入一个新的元素,如果元素不是插入在链尾,则一共要修改四次指针 }

void DlistDelete(Node *p,Node &e)//传递指针p,删除指针p指向的链表元素,用Node型变量e记录该元素的相关数据

{ e.name=p->name; e.start=p->start; e.size=p->size; e.state=p->state;

p->pre->next=p->next;//这里曾写成=p->pre....

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

动态分区分配算法仿真,循环首次适应算法、最佳适应算法、最坏适应算法 #include #include//在输入输出流中用到控制符 #include//用到了SetConsoleTextAttribute函数 #define minsize 2//事先规定的不再切割的剩余分区大小为2 using namespace std; struct Node { int name; int start; int size; int state; Node *pre; Node *next; }; typedef struct Dlinklist { Node *head; }Dlist; //===============

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com