亚洲欧美第一页_禁久久精品乱码_粉嫩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             //初始空閑分區大小    
#define  NULL           0    

#define B 10//PHYSICS
#define D  500//WORK
   
typedef struct Node{   
    int             start_address;      //空閑區首地址    
    int             block_size;         //空閑區大小    
    struct Node*    prior;              //前向指針    
    struct Node*    next;               //后向指針    
    int             state;              //空閑區狀態    
}Node,*LinkList;   
   
LinkList    L;                          //指向用戶存儲區的首地址    
LinkList    Free;                       //空閑分區鏈表頭指針    
LinkList    Assigned;                   //已分配區鏈表頭指針    
   
//--------------------------------------------------------------    
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));      //建立空閑區鏈表(含頭指針)    
    Assigned = (LinkList)malloc(sizeof(Node));  //建立分配區鏈表(含頭指針)    
   
    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()      //顯示存儲區分配情況    
{   
    LinkList p;   
   
    printf("****存儲區情況****:\n");   
    printf("已經分配區有:\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("空閑區有:\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;                   //標記 已找到要移動的空閑區    
            p = p->next ;   
        }   
   
        if(flag == 1)                  
        {   
            for(;p->state == 1 && p != NULL;p = p->next)   
            {   
                p->start_address = p->start_address - q->block_size;   //移動空閑區后的已分配區    
            }   
        }   
   
        if(p->state == 0 && flag == 1)   //找到后面的空閑區,合并    
        {   
            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;                                //空閑區總大小    
    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 = (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;   
   
                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 ;          //計算總的空閑區大小    
            }   
            if(sum >= progress_size)   
            {   
                printf("\n存儲區大小不足,是否緊湊?(Y/N)\n");   
                getchar();   
                scanf("%c",&y_n);   
                if(y_n == 'Y' || y_n == 'y')   
                    Tighten();  //執行緊湊    
            }   
            else    
                printf("\n存儲區大小不足,分配失敗\n");   
        }   
    }   
}//FirstAdapt    
//--------------------------------------------------------------    
void swap(LinkList p,LinkList q)//交換節點    
{   
    p->block_size = q->block_size ;   
    p->start_address = q->start_address ;   
    p->state = q->state ;   
}   
   
   
//--------------------------------------------------------------    
void SortFree(LinkList Free)        //空閑區排序(從小到大)    
{   
    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 中空閑分區    
        {   
            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 中已分配分區    
        {   
            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;            //空閑區總大小    
    char y_n;   
    LinkList p,q,r;   
    LinkList A,F;   
   
    Display();   
   
    EvaluateLink();   
   
    SortFree(Free);     //空閑區鏈表排序    
   
    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 ;          //計算總的空閑區大小    
            }   
            if(sum >= progress_size)   
            {   
                printf("\n存儲區大小不足,是否緊湊?(Y/N)\n");   
                getchar();   
                scanf("%c",&y_n);   
                if(y_n == 'Y' || y_n == 'y')   
                    Tighten();  //執行緊湊    
            }   
            else    
                printf("\n存儲區大小不足,分配失敗\n");   
        }   
    }   
}//BestAdapt    
   
//--------------------------------------------------------------    
void Callback()                     //存儲區回收函數    
{   
    int i;   
    int x;   
    LinkList p;   
   
    printf("已經分配區有:\n");   
    for(i = 0,p = L;p != NULL;p = p->next)       //顯示已分配區    
    {   
        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;                        //回收后狀態位置    
            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.請輸入物理塊數");
	scanf("%d",&m);
	printf("2.請輸入頁數");
	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命中\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一区二区三区免费野_久草精品视频
一区二区三区四区av| 国产精品亚洲人在线观看| 日韩国产欧美在线视频| 国产一区二三区| 色综合色综合色综合| 欧美精品丝袜中出| 久久久不卡网国产精品一区| 亚洲视频综合在线| 首页国产欧美久久| 国产不卡免费视频| 欧美午夜寂寞影院| 久久蜜桃一区二区| 一区二区三区精品| 精品一区二区三区免费播放| 色综合久久久久| 久久这里只有精品视频网| 最新日韩av在线| 久久99国产精品免费网站| 99re热视频精品| 日韩欧美精品三级| 亚洲欧美激情一区二区| 久久99久久久欧美国产| 在线观看视频一区二区| 久久久久久毛片| 免费观看成人av| 日本久久电影网| 国产午夜精品福利| 麻豆精品一区二区av白丝在线| 91一区二区在线观看| 精品国产乱码久久久久久夜甘婷婷 | 成人免费视频免费观看| 91精品欧美久久久久久动漫| 亚洲激情av在线| 丰满亚洲少妇av| 久久一区二区视频| 日韩精品一二三四| 在线观看中文字幕不卡| 亚洲欧美在线另类| 国产成人免费视频| 久久综合九色欧美综合狠狠| 日韩av一二三| 欧美伊人精品成人久久综合97| 国产精品久久久爽爽爽麻豆色哟哟| 美日韩黄色大片| 9191久久久久久久久久久| 一区二区三区在线视频观看 | 成人性色生活片免费看爆迷你毛片| 4438x成人网最大色成网站| 亚洲精品乱码久久久久久久久 | 婷婷综合另类小说色区| 在线视频中文字幕一区二区| 亚洲欧洲日产国码二区| 成人动漫一区二区在线| 中文字幕国产一区| 国产69精品一区二区亚洲孕妇| 久久日一线二线三线suv| 久久99九九99精品| 久久综合一区二区| 国产精品1区2区3区| 国产日韩欧美精品一区| 国产精品538一区二区在线| 国产视频一区二区在线| 国产99一区视频免费| 国产精品乱码久久久久久| 91视频精品在这里| 亚洲第一会所有码转帖| 4438成人网| 国产一区二区0| 久久久国产午夜精品| www.久久久久久久久| 亚洲自拍偷拍av| 欧美一区欧美二区| 极品少妇一区二区| 中文字幕一区二区三区不卡在线 | 欧美一级一区二区| 麻豆高清免费国产一区| 精品久久久久久久人人人人传媒| 久久成人av少妇免费| 亚洲国产精品黑人久久久| 一本大道综合伊人精品热热| 亚洲国产精品久久久久婷婷884| 91精品国产手机| 高清在线成人网| 夜夜亚洲天天久久| www激情久久| 99麻豆久久久国产精品免费| 天天综合网 天天综合色| 久久夜色精品国产欧美乱极品| 99久久精品免费看国产| 日韩精品成人一区二区三区| 国产欧美久久久精品影院| 在线精品视频一区二区三四 | 麻豆91精品视频| 国产精品乱码一区二区三区软件 | 另类欧美日韩国产在线| 国产精品久久久爽爽爽麻豆色哟哟 | 卡一卡二国产精品 | 国产精品毛片a∨一区二区三区| 欧美性一级生活| 国产一区二区在线观看免费| 一区二区三区高清不卡| 2022国产精品视频| 在线观看成人免费视频| 国产精品99久久久久久久女警 | 欧美一区二区三区公司| 91丝袜美女网| 国产一区二区91| 爽好久久久欧美精品| 中文在线一区二区| 欧美二区在线观看| heyzo一本久久综合| 麻豆精品在线播放| 亚洲伊人色欲综合网| 久久精品亚洲麻豆av一区二区| 欧美在线色视频| 国产激情91久久精品导航| 亚洲一区二区三区四区五区中文| 久久久噜噜噜久久人人看| 欧美另类久久久品| 91在线高清观看| 国产精品99久久久久久久vr| 日本中文字幕一区二区视频 | 欧美v日韩v国产v| 在线观看日韩毛片| 成人成人成人在线视频| 国内外成人在线| 日av在线不卡| 香蕉久久夜色精品国产使用方法| 亚洲欧美国产高清| 国产精品拍天天在线| 国产亚洲一二三区| 欧美大片拔萝卜| 日韩一区二区三区观看| 欧美日韩黄色一区二区| 色88888久久久久久影院野外| 丁香激情综合国产| 国产一二三精品| 毛片av一区二区| 久久69国产一区二区蜜臀| 日本不卡一二三区黄网| 石原莉奈在线亚洲二区| 丝瓜av网站精品一区二区| 亚洲国产精品久久久男人的天堂| 一区二区三区产品免费精品久久75| 国产精品不卡在线| 亚洲人成影院在线观看| 一区二区三区精品在线观看| 一二三四社区欧美黄| 亚洲成人www| 日本中文字幕一区| 久久不见久久见中文字幕免费| 麻豆成人久久精品二区三区红| 男女性色大片免费观看一区二区| 男人的天堂亚洲一区| 国产一区二区美女| 国产成人免费视频网站高清观看视频| 国产99久久久精品| 97久久精品人人做人人爽| 91福利视频在线| 欧美亚洲动漫精品| 日韩欧美国产精品| 日韩精品一区在线| 中文字幕精品三区| 亚洲天堂久久久久久久| 亚洲乱码国产乱码精品精可以看| 亚洲一二三区在线观看| 美女视频一区在线观看| 国产一区二区毛片| heyzo一本久久综合| 欧美体内she精高潮| 欧美一区二区三区在线观看| 久久综合久久99| 国产精品成人免费| 视频在线观看91| 国产美女久久久久| 菠萝蜜视频在线观看一区| 欧美在线三级电影| 久久这里只有精品6| 亚洲男同性恋视频| 久国产精品韩国三级视频| 成人黄色综合网站| 欧美精品在线观看播放| 国产色产综合产在线视频| 亚洲一区二区三区四区在线观看| 久久成人免费网| youjizz国产精品| 欧美人与z0zoxxxx视频| 国产人伦精品一区二区| 亚洲国产欧美在线| 国产精品一区专区| 欧美视频第二页| 久久精品日韩一区二区三区| 亚洲国产精品久久不卡毛片 | 水蜜桃久久夜色精品一区的特点| 国产不卡在线视频| 欧美巨大另类极品videosbest | a级精品国产片在线观看| 日韩一区二区三区在线视频| 亚洲摸摸操操av| 激情六月婷婷久久|