📄 最佳适应算法.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 + -