循环首次适应算法

来源:互联网 发布:sql r2是什么意识 编辑:程序博客网 时间:2024/04/29 13:22
#include <stdio.h>#include <graphics.h>#include <conio.h>#include <stdlib.h>#include <malloc.h>#define NULL 0#define int ElemType#define LEN sizeof(struct MainM)#define minsize 8int main_mem[1024];int n;strct MainM{ElemType num;int size;int beign;struct MainM *next,*pre;}*start, *node;void mem_made(){int use_start=random(1023);int use_end=random(96);int i;while(use_start+use_end<1023){for(i=use_start;i<=use_start+use_end;i++){man_mem[i]=1;}use_start=random(1023);use_end=random(96);}}void create(void){int i=0;start=(struct MainM*)malloc(LEN);node=start;for(;i<1023;){if(main_mem[i]==1){i++;contiune;}else if(main_mem[i]==0){node->next=(struct MainM*)malloc(LEN);node->next-pre=node;node->begin=i;node->size=1;while((main_mem[++i]==0)&&(i<=1023)){node->size++;}node=node->next;}}node->pre-next=start;start-pre=node-pre;node=start;}int scan(int m){int i=0;int n=0;struct MainM *p;p=node;do{if(m>node->size)node =node->next;else if(m<=node->size){if(node->size-m<minsize){for(i=node->begin;i<=((node->begin)+node->size-1):i++){main_mem[i]=1;}if(start==node){start=node->next;node->pre->next=start;start->pre=node->pre;}else{node->pre->next=node->next;node->next->pre=node->pre;}node=node->next;p=node;return 1;}else{for(i=node->begin;i<=((node->begin)+m-1)i++){main_mem[i]=1;node->begin+=m;node->size=m;if(node->size==0){if(start==node){start=node->next;node->pre->next=start;start->pre=node->pre;}else{node->pre->next=node->next;node->next->pre=node->pre;}}}node=node->next;p=node;return 1;}}}while(node!=p);return 0;}void print(){struct MainM *d;d=start;printf("B:");do{printf("%d\t",d->begin);d=d->next;}while(d!=start);d=start;printf("\nS:");do{printf("%d\t",d->size);}while(d!=start);}void printline(){struct MainM *f;f=node;setcolor(7);setlinestyle(8,4,3);line((f->begin)*0.6+10,425,(f-begin)*0.6+10,440);line((f->begin)*0.6+7,436,(f-begin)*0.6+10,440);line((f->begin)*0.6+13,436,(f-begin)*0.6+10,440);}int main(int argc,char *argv[]){int i=0;int m=DETECT,d=0;int con=0;initgraph(&m,&d,"C:\\TURBOC2\\BGI");_graphetmem(1024);clrscr();mem_made();create();while(1){clrscr();cleardevice();setbkcolor(1);setlinestyle(0,0,0);for(i=0;i<1024;i++){if(main_mem[i]==0){setcolor(2);}else if(main_mem[i]==1){setcolor(4);}rectangle(1*0.6+10,400,i*0.6+10.5,420);}for(i=0;i<1024;i++){if(main_mem[i]==0){setcolor(2);}elsesetcolor(0);rectangle(1*0.6+10,440,i*0.6+10.5,460);}printline();for(i=0;i<=1023;i++){printf("%d",main_mem[i]);}printf("\n********************************************************************************");printf("\nPlease input the requests:\n");scanf("%d",&n);con=scan(n);if(con){printf("Success!!");}else{printf("Nospace to use!Just wait!!");}getch();}return 0;}

0 0