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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 1.cpp

?? 很好的存儲器演示算法,歡迎大家下載使用。謝謝合作
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include <STDIO.H>    
#include <MALLOC.H>    
#include <STDLIB.H>    
#include <STRING.H>    
 
#define P 10//PHYSICS
#define W  500//WORK 
#define  BLOCK_SIZE     500             //初始空閑分區(qū)大小    
#define  NULL           0    

#define B 10//PHYSICS
#define D  500//WORK
   
typedef struct Node{   
    int             start_address;      //空閑區(qū)首地址    
    int             block_size;         //空閑區(qū)大小    
    struct Node*    prior;              //前向指針    
    struct Node*    next;               //后向指針    
    int             state;              //空閑區(qū)狀態(tài)    
}Node,*LinkList;   
   
LinkList    L;                          //指向用戶存儲區(qū)的首地址    
LinkList    Free;                       //空閑分區(qū)鏈表頭指針    
LinkList    Assigned;                   //已分配區(qū)鏈表頭指針    
   
//--------------------------------------------------------------    
void InitBlock(void) //初始化    
{   
    L = (LinkList)malloc(sizeof(Node));   
       
    L->start_address = 0;   
    L->block_size = BLOCK_SIZE;   
    L->prior = NULL;   
    L->next = NULL;   
    L->state = 0;   
       
    Free = (LinkList)malloc(sizeof(Node));      //建立空閑區(qū)鏈表(含頭指針)    
    Assigned = (LinkList)malloc(sizeof(Node));  //建立分配區(qū)鏈表(含頭指針)    
   
    Assigned->block_size = Free->block_size = 0;   
    Assigned->start_address = Free->start_address = 0;   
    Assigned->prior = Free->prior = NULL;   
    Assigned->next = Free->next = NULL;   
    Assigned->state = Free->state = 0;   
   
   
    //printf("\n初始化空閑塊成功\n");    
}   
//--------------------------------------------------------------    
void Display()      //顯示存儲區(qū)分配情況    
{   
    LinkList p;   
   
    printf("****存儲區(qū)情況****:\n");   
    printf("已經(jīng)分配區(qū)有:\n");   
    for(p = L;p != NULL;p = p->next)   
    {   
        if(p->block_size == 0)   continue;   
        if(p->state == 1)   
        {          
            printf("(%3d,%3d)\n",p->start_address ,p->start_address+p->block_size);   
        }   
    }   
   
    printf("空閑區(qū)有:\n");   
    for(p = L;p != NULL;p = p->next)   
    {   
        if(p->block_size == 0)   continue;   
        if(p->state == 0)   
        {          
            printf("(%3d,%3d)\n",p->start_address ,p->start_address+p->block_size);   
        }   
    }   
}   
//--------------------------------------------------------------    
void Tighten()//緊湊算法    
{   
    int flag;   
    LinkList p,q;   
   
    flag = 0;   
    p = L;      
       
    for(;p != NULL;p = p->next)   
    {   
        if(p->state == 0 && flag == 0)   
        {   
            q = p;   
            if(p->prior != NULL)   
            {   
                p->prior->next = p->next ;   
                p->state = 1;   
            }   
            flag = 1;                   //標記 已找到要移動的空閑區(qū)    
            p = p->next ;   
        }   
   
        if(flag == 1)                  
        {   
            for(;p->state == 1 && p != NULL;p = p->next)   
            {   
                p->start_address = p->start_address - q->block_size;   //移動空閑區(qū)后的已分配區(qū)    
            }   
        }   
   
        if(p->state == 0 && flag == 1)   //找到后面的空閑區(qū),合并    
        {   
            p->start_address = p->start_address - q->block_size ;   
            p->block_size = p->block_size + q->block_size ;   
        }   
    }   
    L->state=1;
    L->block_size = 0;
    printf("緊湊后:\n");   
    Display();   
}   
   
//--------------------------------------------------------------    
void FirstAdapt()//首次適應算法    
{   
    int progress_size;   
    int success;                            //是否分配成功    
    int sum;                                //空閑區(qū)總大小    
    char y_n;   
    LinkList  p,q;   
    Display();   
                   
    printf("\n請輸入進程需要的存儲空間:\n");   
    scanf("%d",&progress_size);   
       
    if(progress_size <= 0)       printf("A wrong number!\n");   
    else    
    {   
        for(p = L;p != NULL;p = p->next)   
        {   
            if(progress_size <= p->block_size && p->state == 0)        //找到可用的空閑區(qū)    
            {   
                q = (LinkList)malloc(sizeof(Node));                 // q 分配后剩余的存儲塊(空閑區(qū))    
   
                q->start_address = p->start_address + progress_size;     
                q->block_size = p->block_size - progress_size;   
                q->prior = p;   
                q->next  = p->next;   
                q->state = 0;   
   
                if(q->block_size != 0)   
                {   
                    p->next = q;   
                }   
                p->block_size = progress_size;               // p 指向已分配的塊單元    
                p->state = 1;   
           
                success = 1;   
                break;   
            }   
            else continue;   
        }   
   
        if(success == 1)        //成功分配    
        {   
            Display();   
        }   
        else                    //暫時未能成功分配    
        {   
            sum = 0;   
            for(p = L;p != NULL;p = p->next )   
            {   
                if(p->state == 0)   
                    sum = sum + p->block_size ;          //計算總的空閑區(qū)大小    
            }   
            if(sum >= progress_size)   
            {   
                printf("\n存儲區(qū)大小不足,是否緊湊?(Y/N)\n");   
                getchar();   
                scanf("%c",&y_n);   
                if(y_n == 'Y' || y_n == 'y')   
                    Tighten();  //執(zhí)行緊湊    
            }   
            else    
                printf("\n存儲區(qū)大小不足,分配失敗\n");   
        }   
    }   
}//FirstAdapt    
//--------------------------------------------------------------    
void swap(LinkList p,LinkList q)//交換節(jié)點    
{   
    p->block_size = q->block_size ;   
    p->start_address = q->start_address ;   
    p->state = q->state ;   
}   
   
   
//--------------------------------------------------------------    
void SortFree(LinkList Free)        //空閑區(qū)排序(從小到大)    
{   
    LinkList p,q,t;   
   
    t = (LinkList)malloc(sizeof(Node));   
   
    for(p = Free->next;p != NULL;p = p->next )   
    {   
        q = p;   
        for(;q != NULL;q = q->next )   
            if(q->block_size < p->block_size )   
            {   
                swap(t,q);   
                swap(q,p);   
                swap(p,t);   
            }   
    }   
}   
//--------------------------------------------------------------    
void EvaluateLink()   
{   
    LinkList p,q,r,s;   
       
    q = Free;   
    s = Assigned;   
       
    for(p = L;p != NULL;p = p->next)   
    {   
        if(p->state == 0)                        //查找 L 中空閑分區(qū)    
        {   
            r = (LinkList)malloc(sizeof(Node));   
   
            r->start_address = p->start_address;   
            r->block_size = p->block_size ;   
            r->state = p->state ;   
            r->next = NULL;   
   
            q->next = r;   
            q->next->prior = q;   
            q = q->next ;   
        }   
   
        else if(p->state == 1)                   //查找 L 中已分配分區(qū)    
        {   
            r = (LinkList)malloc(sizeof(Node));   
               
            r->start_address = p->start_address ;   
            r->block_size = p->block_size ;   
            r->state = p->start_address ;   
            r->next = p->next;   
   
            s->next = r;   
            s->next->prior = s;   
            s = s->next;   
        }   
    }   
}   
//-------------------------//最佳適應算法-------------------------------------    
void BestAdapt()        
{   
    int progress_size;  //新增進程所需空間大小    
    int success;        //是否分配成功    
    int sum;            //空閑區(qū)總大小    
    char y_n;   
    LinkList p,q,r;   
    LinkList A,F;   
   
    Display();   
   
    EvaluateLink();   
   
    SortFree(Free);     //空閑區(qū)鏈表排序    
   
    printf("\n請輸入進程需要的存儲空間:\n");   
    scanf("%d",&progress_size);   
   
    A = Assigned;   
    F = Free;   
   
    if(progress_size <= 0) printf("A wrong number\n");   
    else   
    {   
        for(p = Free->next;p != NULL;p = p->next)   
        {   
            if(progress_size <= p->block_size)   
            {   
                q = (LinkList)malloc(sizeof(Node));         // q 分配后剩余的空閑塊    
       
                q->start_address = p->start_address + progress_size;     
                q->block_size = p->block_size - progress_size;   
                q->prior = p;   
                q->next  = p->next;   
                q->state = 0;   
       
                p->next = q;   
                p->block_size = progress_size;               // p 指向已分配的塊單元    
                p->state = 1;   
       
                p->next = Assigned->next ;   
                A->next = p;   
       
                q->next = Free->next;   
                F->next = q;   
   
                success = 1;   
   
                for(r = L;r != NULL;r = r->next )   
                {   
                    if(r->start_address == p->start_address )   
                    {   
                        r->start_address = p->start_address ;   
                        r->block_size = p->block_size ;   
                        r->state = 1;   
   
                        q->next = r->next ;   
                        r->next = q;   
                    }   
                }   
                break;   
            }   
            else continue;   
        }   
   
        if(success == 1)   
        {   
            Display();   
        }   
        else   
        {   
            sum = 0;   
            for(p = L;p != NULL;p = p->next )   
            {   
                if(p->state == 0)   
                    sum = sum + p->block_size ;          //計算總的空閑區(qū)大小    
            }   
            if(sum >= progress_size)   
            {   
                printf("\n存儲區(qū)大小不足,是否緊湊?(Y/N)\n");   
                getchar();   
                scanf("%c",&y_n);   
                if(y_n == 'Y' || y_n == 'y')   
                    Tighten();  //執(zhí)行緊湊    
            }   
            else    
                printf("\n存儲區(qū)大小不足,分配失敗\n");   
        }   
    }   
}//BestAdapt    
   
//--------------------------------------------------------------    
void Callback()                     //存儲區(qū)回收函數(shù)    
{   
    int i;   
    int x;   
    LinkList p;   
   
    printf("已經(jīng)分配區(qū)有:\n");   
    for(i = 0,p = L;p != NULL;p = p->next)       //顯示已分配區(qū)    
    {   
        if(p->state == 1)   
        {          
            printf("%d.\t(%3d,%3d)\n",i+1,p->start_address ,p->start_address+p->block_size);   
            i++;   
        }   
    }   
   
    printf("請輸入需要撤消的進程編號:\n");   
    scanf("%d",&x);   
   
    for(i = 0,p = L;p != NULL;p = p->next)   
    {   
        if(p->state == 1) i++;   
        if(i == x)   
        {   
            p->state = 0;                        //回收后狀態(tài)位置    
            break;   
        }   
    }   
   
    for(p = L;p->next != NULL;)         
    {   
        if(p->state == 0 && p->next->state == 0)   
        {   
            p->block_size = p->block_size + p->next->block_size ;       //改變空閑塊大小    
            p->next = p->next->next ;   
            if(p->next != NULL)   
            {   
                p->next->prior = p;   
            }   
        }   
        else    p = p->next ;   
    }   
   
    Display();   
}//回收算法    
  //--------------頁面置換算法之最佳置換算法-------------------
int p[P],y[W],c[P]={0};
int m,n,l,n2,hit=0;
int ding=0;

void init()                        //輸入物理塊,頁的信息
{
	int i;
	printf("1.請輸入物理塊數(shù)");
	scanf("%d",&m);
	printf("2.請輸入頁數(shù)");
	scanf("%d",&n);
	printf("輸入頁號:\n");
	for(i=0;i<n;i++)
		scanf("%d",&y[i]);
}
void  initial_phy()                          //物理塊的初始化,先將物理塊裝滿
{
	int i,q=0,sign0;
	p[0]=y[0];
	ding++;
	sign0=0;
	n2=1;
	for(i=1;i<m;i++)
	{
		for(int t=0;t<i;t++)          //判斷將要裝入的物理塊是否與物理塊中的內容相同
		{
			if(p[t]==y[n2])
			{
				sign0=1;
				break;
			}
		}
	printf("\n物理塊內容:\n");
				for(int j=0;j<i;j++)   //顯示當前物理塊內容
		{
			
		    printf("%d  ",p[j]);
		}

		if(sign0)                   
		{
			printf("\n命中\(zhòng)n");
			hit++;
			i--;
			n2++;
		}
		else                     //判斷與已存在物理塊內容不同,進行裝入
		{
			p[i]=y[n2];
			ding++;
			n2++;
		}
		sign0=0;
		
      
	}
	printf("\n物理塊內容:\n");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩在线三区| 亚洲bdsm女犯bdsm网站| 亚洲一区二区五区| 经典三级视频一区| 欧美在线免费视屏| 国产无遮挡一区二区三区毛片日本| 一卡二卡欧美日韩| 国产成人av电影在线观看| 91精品在线免费观看| 综合久久久久久| 国产一区二区三区av电影 | 成人综合婷婷国产精品久久| 欧美亚洲另类激情小说| 国产精品毛片a∨一区二区三区| 天天综合网天天综合色| 91网址在线看| 亚洲色图视频网| 国产成人精品一区二区三区四区 | 日本成人在线网站| 91黄视频在线| 亚洲嫩草精品久久| 99久久精品国产精品久久| 久久久国际精品| 韩国女主播成人在线| 91精品国产综合久久福利| 一区二区高清视频在线观看| 99亚偷拍自图区亚洲| 国产精品色哟哟网站| 国产一区二区三区在线观看精品 | 亚洲一区二区高清| 欧美亚洲国产一区在线观看网站| 日韩理论片网站| 97se亚洲国产综合自在线| 中文字幕一区二区在线播放| 不卡一区中文字幕| 日韩一区中文字幕| 色婷婷国产精品| 亚洲精品免费看| 在线观看国产日韩| 视频精品一区二区| 欧美一区二区成人6969| 蜜桃久久精品一区二区| 精品日韩欧美在线| 国产东北露脸精品视频| 国产精品久久久久影院亚瑟| 色综合久久中文综合久久牛| 亚洲国产aⅴ成人精品无吗| 欧美日韩国产一级| 韩国中文字幕2020精品| 国产精品三级av| 日本久久电影网| 日本美女一区二区三区| 欧美精品一区二区三区视频| 成人动漫视频在线| 亚洲主播在线播放| 欧美sm美女调教| 不卡的电视剧免费网站有什么| 亚洲免费观看在线视频| 91精品国产乱码| 国产91精品一区二区麻豆网站| 亚洲女人的天堂| 日韩亚洲欧美综合| 波多野结衣中文一区| 成人激情免费视频| 亚洲国产毛片aaaaa无费看 | 成人免费一区二区三区视频 | 亚洲成人一二三| 91麻豆精品国产91久久久使用方法| 日产精品久久久久久久性色| 欧美激情资源网| 欧美少妇性性性| 国产精品综合二区| 亚洲高清不卡在线| 欧美极品另类videosde| 欧美日韩aaaaa| 高清国产一区二区| 人人爽香蕉精品| 自拍视频在线观看一区二区| 日韩女优制服丝袜电影| 一本久久综合亚洲鲁鲁五月天| 蜜桃一区二区三区四区| 亚洲色图视频免费播放| 国产亚洲欧美激情| 日韩欧美色综合网站| 91论坛在线播放| 成人丝袜18视频在线观看| 日本欧美一区二区| 亚洲高清中文字幕| 亚洲精品国产一区二区精华液 | 久久夜色精品一区| 欧美视频三区在线播放| 99久久99久久综合| 成人毛片在线观看| 国内精品伊人久久久久av影院 | 日韩精品五月天| 亚洲精品成a人| 中文字幕在线不卡| 国产女主播在线一区二区| 欧美一级在线观看| 制服丝袜成人动漫| 欧美人与禽zozo性伦| 在线观看免费视频综合| 97精品久久久久中文字幕| youjizz国产精品| 成人午夜电影小说| 国产99久久精品| 国产成人8x视频一区二区| 韩国女主播成人在线观看| 蜜桃在线一区二区三区| 日本免费在线视频不卡一不卡二| 亚洲不卡一区二区三区| 亚洲国产成人精品视频| 亚洲精品videosex极品| 亚洲一区二区三区四区中文字幕| 日韩伦理av电影| 亚洲女人的天堂| 一区二区三区四区蜜桃| 亚洲图片自拍偷拍| 日韩精品91亚洲二区在线观看| 日韩—二三区免费观看av| 青青草原综合久久大伊人精品优势| 午夜精品一区二区三区电影天堂| 亚洲成人在线观看视频| 蜜臀av一区二区在线免费观看| 美女视频免费一区| 国精产品一区一区三区mba桃花 | 美日韩一区二区三区| 麻豆精品久久久| 国产精品123区| 波多野结衣在线aⅴ中文字幕不卡| 从欧美一区二区三区| 色综合久久久久久久久久久| 欧美亚一区二区| 日韩午夜电影在线观看| 国产亚洲一区二区三区在线观看| 中文字幕乱码一区二区免费| 亚洲免费观看高清完整版在线 | 免费观看成人鲁鲁鲁鲁鲁视频| 久久er精品视频| 国产69精品一区二区亚洲孕妇 | 欧美大片顶级少妇| 国产精品嫩草影院av蜜臀| 亚洲黄色免费网站| 青青草国产成人99久久| 国产不卡视频在线播放| 欧美日韩一卡二卡| 久久久午夜精品理论片中文字幕| 亚洲色大成网站www久久九九| 亚洲一区二区三区四区在线免费观看 | 欧美sm极限捆绑bd| 中文无字幕一区二区三区 | 亚洲欧美激情一区二区| 天天av天天翘天天综合网色鬼国产| 激情伊人五月天久久综合| jvid福利写真一区二区三区| 欧美精品三级在线观看| 国产视频视频一区| 亚洲国产精品久久人人爱| 国产资源在线一区| 欧美日韩视频一区二区| 国产欧美日韩综合精品一区二区| 亚洲精品伦理在线| 国产精品亚洲第一| 在线不卡中文字幕| 亚洲久草在线视频| 国产一区二区三区精品视频| 欧美日韩精品欧美日韩精品一综合| 久久久精品国产免大香伊 | 亚洲黄色小说网站| 国产白丝网站精品污在线入口| 欧美日韩一区二区电影| 国产精品无遮挡| 久久成人18免费观看| 精品视频在线免费观看| 亚洲视频在线一区二区| 国产在线播放一区| 欧美日本乱大交xxxxx| 日韩美女精品在线| 国产高清一区日本| 日韩一区国产二区欧美三区| 一区二区三区欧美| 波多野结衣在线一区| 久久久精品天堂| 久久99国产精品久久99| 欧美疯狂做受xxxx富婆| 一区二区三区精品久久久| 99久久国产综合精品女不卡| 国产精品污www在线观看| 精品一区二区免费在线观看| 91精品国产黑色紧身裤美女| 五月婷婷综合网| 欧美日本一道本| 视频一区视频二区中文| 欧美精品国产精品| 日韩在线一区二区| 日韩一级片在线播放| 日本aⅴ免费视频一区二区三区| 欧美视频在线播放| 亚洲高清视频在线| 6080国产精品一区二区|