⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 最佳适应算法.cpp

📁 操作系统内存分配算法中的最佳使用算法以及运行结果显示
💻 CPP
字号:
#include "stdio.h"
#include <stdlib.h>
#include <conio.h>
#define getform(type) (type*)malloc(sizeof(type))
#define NULL 0
struct kongform
{
int kongnum;
int kongsize;
int kongdizhi;
struct kongform* link;
}*headk=NULL,*k;
typedef struct kongform KONG;
struct workform
{
int workname;
int worksize;
struct workform *link;
}*headw=NULL,*w;
struct yifenform
{
int yifennum;
int yifendizhi;
int yifensize;
int yifenzhuangtai;
struct yifenform *link;
}*heady=NULL,*y;
sort()
{
    KONG *first, *second;
    int insert=0;
     if((headk==NULL)||((k->kongsize)<(headk->kongsize)))
     {
        k->link=headk;
        headk=k;
     }
     else
     {
       first=headk;
       second=first->link;
        while(second!=NULL)
        {
           if((k->kongsize)<(second->kongsize))
           {
              k->link=second;
              first->link=k;
              second=NULL;
              insert=1;
           }
           else
           {
              first=first->link;
              second=second->link;
           }
        }
     if(insert==0) first->link=k;
     }
}


input()
{
    int i;
    for(i=0;i<4;i++)
    {
       k=getform(KONG);
       printf("\n shu ru kong xian fen qu di zhi :");
       scanf("%d",&k->kongdizhi);
       printf("\n shu ru kong xian fen qu da xiao:");
       scanf("%d",&k->kongsize);
       k->link=NULL;
       sort();
    }
}
mingming()
{ int n=0;
  k=headk;
  for(n=0;n<4;n++)
  {k->kongnum=n;
   k=k->link;
   }
}
setworkform()
{int i=0;
 struct workform *w1,*w2;
 w1=w2=(struct workform *)malloc(sizeof(struct workform));
 printf("\n qing shu ru zuo ye ming :");
 scanf("%d",&w1->workname);
 printf("\n qing shu ru zuo da xiao :");
 scanf("%d",&w1->worksize);
 w1->link=NULL;
 while(w1->worksize!=0&&i!=3)
   {i=i+1;
    if(i==1)headw=w1;
    else {w2->link=w1;
          w2=w1;}
    w1=(struct workform *)malloc(sizeof(struct workform));
    printf("\n qing shu ru zuo ye ming :");
    scanf("%d",&w1->workname);
    printf("\n qing shu ru zuo da xiao :");
    scanf("%d",&w1->worksize);
    w1->link=NULL;
     }
 }



setyifenform()
{int i=0;
 struct yifenform *y1,*y2;
 y1=y2=(struct yifenform *)malloc(sizeof(struct yifenform));
 y1->yifennum=0;
 y1->yifendizhi=0;
 y1->yifensize=0;
 y1->yifenzhuangtai=0;
 y1->link=NULL;
 while(i!=3)
   {i=i+1;
    if(i==1)heady=y1;
    else {y2->link=y1;
          y2=y1;}
    y1=(struct yifenform *)malloc(sizeof(struct yifenform));
    y1->yifennum=0;
    y1->yifendizhi=0;
    y1->yifensize=0;
    y1->yifenzhuangtai=0;
    y1->link=NULL;
     }
 }


dispkong()
{ int i;
  k=headk;
  printf("\n kongnum \t kongsize \t kongdizhi \n");
  for(i=0;i<4;i++)
  {
    if(k->kongsize!=0)
    {
    printf("|%d\t\t",k->kongnum);
    printf("|%d\t\t",k->kongsize);
    printf("|%d\t\t",k->kongdizhi);
    printf("\n");
    }
    k=k->link;
   }
}
dispwork()
{
   int i;
   w=headw;
   printf("\n workname \t worksize \n");
   for(i=0;i<2;i++)
   {
      printf("|%d\t\t",w->workname);
      printf("|%d",w->worksize);
      printf("\n");
      w=w->link;
      }
}
dispyifen()
{ int i;
  y=heady;
  printf("\n yifennum \t yifensize \t yifendizhi \t yifenzhuangtai\n");
  for(i=0;i<2;i++)
  {
    printf("|%d\t\t",y->yifennum);
    printf("|%d\t\t",y->yifensize);
    printf("|%d\t\t\t",y->yifendizhi);
    printf("|%d\t\t",y->yifenzhuangtai);
    printf("\n");
    y=y->link;
    }
}

bijiao()
{int i;
 w=headw;
 k=headk;
 y=heady;
 for(i=0;i<4;i++)
 {if(w->worksize>k->kongsize)
   {k=k->link;
    continue;
    }
   else
   {    if(w->worksize<k->kongsize)
	 {
          y->yifennum=k->kongnum;
          y->yifendizhi=k->kongdizhi;
          y->yifensize=w->worksize;
          y->yifenzhuangtai=w->workname;
          k->kongdizhi=k->kongdizhi+w->worksize;
          k->kongsize=k->kongsize-w->worksize;
          do{
             k->kongnum++;
             k=k->link;
	     }while(k!=NULL);
	  }/*end if*/
	  else{
	       y->yifennum=k->kongnum;
	       y->yifendizhi=k->kongdizhi;
	       y->yifensize=w->worksize;
	       y->yifenzhuangtai=w->workname;
	       k->kongdizhi=k->kongdizhi+w->worksize;
	       k->kongsize=k->kongsize-w->worksize;
	       }
	       k=headk;
    }
    y=y->link;
    w=w->link;
    }
   headw=w->link;

   }
main()
{ input();
  mingming();
  setworkform();
  setyifenform();
  dispkong();
  dispwork();
  bijiao();
  dispkong();
  dispyifen();
  getch();

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -