亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 內(nèi)存分配算法.c

?? 內(nèi)存分配算法,用c實(shí)現(xiàn)內(nèi)存的管理分配,屬于操作系統(tǒng)范疇
?? C
字號:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define MAX 32767
typedef struct node   
{
   int address,size;
   struct node *next;
}RECT;
RECT *assignment(RECT *head,int application);
void acceptment1(RECT *head,RECT *back1);
void acceptment2(RECT *head,RECT *back1) ;
int backcheck(RECT *head,RECT *back1);
void print(RECT *head);
RECT *head,*back,*assign1,*p;
int application1,maxblocknum;
char way;
/*主函數(shù)*/
main()
{
   char choose[10];
   int check;
   head=malloc(sizeof(RECT)); 
   p=malloc(sizeof(RECT));
   head->size=MAX;
   head->address=0;
   head->next=p;
   maxblocknum=1;
   p->size=MAX;
   p->address=0;
   p->next=NULL;
   print(head);  
   printf("Enter the way(best or first(b/f)\n");
   scanf("%c",&way);
   do{
      printf("Enter the assign or accept(as/ac)\n");
      scanf("%s",choose); /*選擇分配或回收*/
      if(strcmp(choose,"as")==0) 
      {
	 printf("Input application:\n");
	 scanf("%d",&application1);
	 assign1=assignment(head,application1);
	 if(assign1->address==-1)
	    printf("Too large application!,assign fails!!\n\n");
	 else
	    printf("Success!!ADDRESS=%5d\n",assign1->address); 
	 print(head);
      }
      else
	 if(strcmp(choose,"ac")==0) /*回收*/
	 {
	    back=malloc(sizeof(RECT));
	    printf("Input Adress and Size!!\n");
	    scanf("%d%d",&back->address,&back->size);
	    check=backcheck(head,back); 
	    if(check==1)
	    {
	       if(tolower(way)=='f')/*首先適應(yīng)算法*/
		  acceptment1(head,back); /*首先適應(yīng)*/
	       else
		  acceptment2(head,back);/*最佳適應(yīng)*/
	       print(head);
	    }
	 }
   }while(!strcmp(choose,"as")||!strcmp(choose,"ac"));
}
/*分配函數(shù)*/
RECT *assignment(RECT *head,int application)
{
   RECT *after,*before,*assign;
   assign=malloc(sizeof(RECT)); 
   assign->size=application;
   assign->next=NULL;
   if(application>head->size||application<=0)
      assign->address=-1; /*申請無效*/
   else
   {
      before=head;
      after=head->next;
      while(after->size<application)
      {
	 before=before->next;
	 after=after->next;
      }
      if(after->size==application) /*結(jié)點(diǎn)大小等于申請大小則完全分配*/
      {
	 if(after->size==head->size)
	    maxblocknum--;
	 before->next=after->next;
	 assign->address=after->address;
	 free(after);
      }
      else
      {
	 if(after->size==head->size) maxblocknum--;
	 after->size=after->size-application; /*大于申請空間則截取相應(yīng)大小分配*/
	 assign->address=after->address+after->size;
	 if(tolower(way)=='b')
	 {
	    before->next=after->next;
	    back=after;
	    acceptment2(head,back);
	 }
      }
      if(maxblocknum==0) 
      {
	 before=head;
	 head->size=0;
	 maxblocknum=1;
	 while(before!=NULL)
	 {
	    if(before->size>head->size)
	    {
	       head->size=before->size;
	       maxblocknum=1;
	    }
	    else
	       if(before->size==head->size)
		  maxblocknum++;
	    before=before->next;
	 }
      }
   }
   assign1=assign;
   return assign1; 
}
void acceptment1(RECT *head,RECT *back1)/*首先適應(yīng)*/
{
   RECT *before,*after;
   int insert;
   before=head;
   after=head->next;
   insert=0;
   while(!insert) 
   {
      if((after==NULL)||
	 ((back1->address<=after->address)&&
	   (back1->address>=before->address)))
      {
	 before->next=back1;
	 back1->next=after;
	 insert=1;
      }
      else
      {
	 before=before->next;
	 after=after->next;
      }
   }
   if(back1->address==before->address+before->size)
   {
      before->size=before->size+back1->size;
      before->next=back1->next;
      free(back1);
      back1=before;
   }
   if(after!=NULL&&(after->address==back1->address+back1->size))
   {  
      back1->size=back1->size+after->size;
      back1->next=after->next;
      free(after);
   }
   if(head->size<back1->size) 
   {
      head->size=back1->size;
      maxblocknum=1;
   }
   else
      if(head->size==back1->size)
	 maxblocknum++;
}
/*最佳適應(yīng)*/
void acceptment2(RECT *head,RECT *back1)
{
   RECT *before,*after;
   int insert ;
   insert=0;
   before=head;
   after=head->next;
   if(head->next==NULL) 
   {
      head->size=back1->size;
      head->next=back1;
      maxblocknum++;
      back1->next=NULL;
   }
   else
   {
      while(after!=NULL) 
      if(back1->address==after->size+after->address)
      {
	 before->next=after->next;
	 back->size=after->size+back1->size;
	 free(after);
	 after=NULL;
      }
      else
      {
	 after=after->next;
	 before=before->next;
      }
      before=head;
      after=head->next;
      while(after!=NULL)
      if(after->address==back1->size+back1->address) 
      {
	 back1->size=back1->size+after->size;
	 before->next=after->next;
	 free(after);
	 after=NULL;
      }
      else
      {
	 before=before->next;
	 after=after->next;
      }
      before=head;
      after=head->next;
      do{
	 if(after==NULL||(after->size>back1->size))
	 {
	    before->next=back1;
	    back1->next=after;
	    insert=1;
	 }
	 else
	 {
	    before=before->next;
	    after=after->next;
	 }
      }while(!insert);
      if(head->size<back1->size) 
      {
	 head->size=back1->size;
	 maxblocknum++;
      }
      else
	 if(head->size==back1->size)
	    maxblocknum++;
   }
}

void print(RECT *head) 
{
   RECT *before,*after;
   int index,k;
   before=head->next;
   index=1;
   if(head->next==NULL)
      printf("NO part for assignment!!\n");
   else
   {
      printf("*****index*******address********end*********size*****\n");
      while(before!=NULL)
      {
	 printf("----------------------------------------------------\n");
	 printf("     %-13d%-13d%-13d%-13d\n",index,before->address,before->address+before->size-1,before->size);
	 printf("----------------------------------------------------\n");
	 index++;
	 before=before->next;
      }
   }
}
int backcheck(RECT *head,RECT *back1)
{
   RECT *before,*after;
   int check=1;
   if(back1->address<0||back1->size<0)
      check=0;
   before=head->next;
   while((before!=NULL)&&check)
      if(((back1->address<before->address)
	 &&(back1->address+back1->size>before->address))
	 ||((back1->address>=before->address)
	&&(back1->address<before->address+before->size)))
	 check=0;
      else
	 before=before->next;
   if(check==0)
      printf("Error input!!\n");
   return check;  
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女久久久久久久| 欧美性生活久久| 免费三级欧美电影| 一区二区三区在线观看欧美| 亚洲精品免费在线播放| 一区二区三区在线视频免费 | 欧美日韩国产小视频在线观看| 久久99热国产| 亚洲二区在线视频| 青草国产精品久久久久久| 日韩国产精品91| 成人丝袜视频网| 日本精品一区二区三区高清 | 国产精品色一区二区三区| 中文乱码免费一区二区| 亚洲综合视频网| 国产成人亚洲综合a∨婷婷| 日本精品一级二级| 久久日一线二线三线suv| 成人免费一区二区三区视频| 日本欧美在线观看| av在线这里只有精品| 精品少妇一区二区三区在线视频| 国产欧美日本一区视频| 美洲天堂一区二卡三卡四卡视频| 国产99久久久久| 久久精品亚洲乱码伦伦中文| 午夜精品久久久| 91网址在线看| 亚洲男人天堂av网| 99久久精品免费看国产| 欧美日韩亚洲不卡| 亚洲成a人v欧美综合天堂| av中文字幕一区| 国产精品福利一区| 成人午夜av在线| 久久免费偷拍视频| 国产成人精品免费网站| 久久久精品中文字幕麻豆发布| 久久综合av免费| 日韩理论片中文av| 99re8在线精品视频免费播放| 制服丝袜亚洲色图| 亚洲午夜av在线| 欧美日韩一区二区电影| 亚洲影视在线观看| 欧美三级蜜桃2在线观看| 亚洲视频每日更新| 91国偷自产一区二区三区成为亚洲经典| 欧美激情在线一区二区| 99在线精品免费| 亚洲高清一区二区三区| 日韩色视频在线观看| 国产成人亚洲综合a∨婷婷| 国产午夜精品一区二区| 99视频一区二区| 日韩精品久久久久久| 日韩欧美国产1| 色综合久久99| 免费视频最近日韩| 亚洲欧美综合网| 欧美一级搡bbbb搡bbbb| 韩国女主播成人在线| 综合久久给合久久狠狠狠97色| 欧美三级日韩三级国产三级| 久久精品理论片| 亚洲国产一区二区在线播放| 欧美精品色综合| av成人动漫在线观看| 免费不卡在线观看| 亚洲高清在线视频| 中文字幕一区二区视频| 26uuu国产一区二区三区| 欧洲精品中文字幕| 91视频一区二区三区| 婷婷久久综合九色国产成人| 8v天堂国产在线一区二区| 亚洲国产日韩综合久久精品| 免费不卡在线观看| 亚洲国产日日夜夜| 尤物av一区二区| 国产精品国产馆在线真实露脸 | 亚洲精品一区二区三区在线观看| 99久久精品国产一区二区三区| 久久精品国产亚洲5555| 亚洲成av人片| 麻豆专区一区二区三区四区五区| 一区二区在线观看免费视频播放| 国产欧美一区二区在线| 国产精品天天看| 国产精品福利影院| 国产精品乱子久久久久| 成人欧美一区二区三区视频网页| 亚洲国产精品黑人久久久| 亚洲国产精品二十页| **网站欧美大片在线观看| 亚洲视频免费看| 免费高清视频精品| 成人一区二区三区视频| 日本道精品一区二区三区| 欧美精品在线一区二区三区| 日韩欧美精品三级| 亚洲乱码日产精品bd| 性感美女极品91精品| 久久99久久久欧美国产| 99热99精品| www久久精品| 亚洲成人久久影院| 国产高清不卡一区| 欧美日韩精品专区| 中文字幕第一区综合| 午夜视频一区在线观看| 色综合中文字幕国产 | 久久精品亚洲精品国产欧美kt∨ | 精东粉嫩av免费一区二区三区| 精品午夜一区二区三区在线观看| 国产高清不卡一区二区| 91精品国产综合久久婷婷香蕉 | 成人激情免费网站| 欧美一二三在线| 亚洲国产成人tv| 一本大道久久a久久综合婷婷| 欧美成人女星排行榜| 午夜视频久久久久久| 91无套直看片红桃| 亚洲天堂精品在线观看| 福利一区二区在线观看| 欧美日韩国产123区| 国产精品入口麻豆九色| 国产精品自在欧美一区| 久久人人爽爽爽人久久久| 国产69精品一区二区亚洲孕妇 | 亚洲女同一区二区| www.亚洲免费av| 国产精品九色蝌蚪自拍| 成人的网站免费观看| 成人欧美一区二区三区小说| 成人aaaa免费全部观看| 亚洲视频小说图片| 一本久久综合亚洲鲁鲁五月天 | 天天综合色天天综合色h| 色久综合一二码| 亚洲va韩国va欧美va| 91精品国产一区二区三区蜜臀| 亚洲一区二区三区三| 欧美成人三级电影在线| 国产剧情在线观看一区二区| 中文字幕欧美激情| 欧美伊人久久大香线蕉综合69| 日本中文字幕一区二区视频 | 日本欧美在线看| www国产亚洲精品久久麻豆| 91一区一区三区| 久久精品国产精品亚洲精品| 欧美国产激情一区二区三区蜜月| 99精品视频在线观看| 另类小说视频一区二区| 国产精品成人免费在线| 日韩一区二区三| 在线亚洲精品福利网址导航| 韩国女主播一区| 午夜精品久久久久影视| 国产精品污www在线观看| 日韩天堂在线观看| 欧美图片一区二区三区| 不卡视频免费播放| 精品在线视频一区| 蜜桃久久久久久久| 亚洲精品菠萝久久久久久久| 久久众筹精品私拍模特| 91精品在线观看入口| 欧美日韩aaaaa| 欧美挠脚心视频网站| 色美美综合视频| 91性感美女视频| 色综合网色综合| 99久久亚洲一区二区三区青草| 国产一区在线观看视频| 韩国午夜理伦三级不卡影院| 日本一不卡视频| 精品一区二区三区免费视频| 青青草91视频| 国产在线不卡视频| 日韩中文字幕av电影| 一区二区三区久久久| 五月激情丁香一区二区三区| 亚洲bt欧美bt精品777| 日韩电影在线免费| 国精产品一区一区三区mba桃花 | 在线观看一区二区视频| 91国偷自产一区二区开放时间| 欧美三级中文字幕| 精品久久人人做人人爽| 亚洲欧洲另类国产综合| 一区二区在线观看不卡| 美女高潮久久久| 91亚洲精品乱码久久久久久蜜桃| 91久久精品一区二区| 日韩一级免费观看| 亚洲精品中文在线影院|