½ø³Ìµ÷¶È ×÷Òµµ÷¶È Ö÷´æ¿Õ¼äµÄ·ÖÅäÓë»ØÊÕ Îļþϵͳ ÏÂÔØ±¾ÎÄ

{

p=p->next; has=0; } }

if(has==0) /*ÊäÈë×÷ÒµÃû²»´æÔÚ*/ {

printf(\ÊäÈë×÷ÒµÃû´íÎó!ÇëÖØÐÂÊäÈë!\\n\ input2(); } }

void init_sub() /*×Ô¶¯³õʼ»¯¿ÕÏзÖÇø±í*/ {

r=gettype(SUB);

strcpy(r->name,\r->addr=5; r->size=10; r->state='n'; sub=r; sub->pre=NULL;

s=gettype(SUB);

strcpy(s->name,\s->addr=20; s->size=120; s->state='n'; sub->next=s;

s->pre=sub; r=s;

r->next->next=NULL;

} void init_manual() /*ÊÖ¶¯³õʼ»¯¿ÕÏзÖÇø±í*/ {

int i,num3; char

s[][10]={\five\en\

printf(\ÇëÊäÈë³õʼ»¯¿Õ¼ä¿éÊý,×î´óÖµ10:\

scanf(\ for(i=0;i

{

r=gettype(SUB); printf(\¿éºÅ:%s\\n\ strcpy(r->name,s[i]);

printf(\ÊäÈë¿éÊ×µØÖ·:\ scanf(\

printf(\ÊäÈë¿éµÄ´óС:\ scanf(\ r->state='n';

r->next=NULL;

initsort(); /*°´Ê×⽫·ÖÇø±íÁ¬

s=gettype(SUB); ½ÓÆðÀ´*/ strcpy(s->name,\ }

s->addr=160; s->size=40; s->state='n'; printf(\°´ÈÎÒ»¼ü¼ÌÐø......\\n\ r->next=s; s->pre=r; r=s;

s=gettype(SUB);

getchar(); }

strcpy(s->name,\

s->addr=220; s->size=10; s->state='n'; void disp() /*¿ÕÏзÖÇø±íµÄÏÔʾº¯Êý r->next=s;

s->pre=r; r=s;

*/

{

printf(\·ÖÇø Ê×µØÖ· ³¤¶È ״̬ \\n\ r=sub;

s=gettype(SUB);

strcpy(s->name,\

s->addr=250; s->size=20; s->state='n'; while(r!=NULL) r->next=s; { s->pre=r;

37

printf(\%s\\t\\t%d\\t\\t%d\\t\\t%c\\n\r->name,r->addr,r->size,r->state); r=r->next; }

printf(\ }

void disp2() /*ÏÔʾÒÑ·ÖÅäÄÚ´æµÄ×÷Òµ±íº¯Êý*/ {

printf(\×÷ÒµÃû Ê×µØÖ· ³¤¶È ״̬ \\n\ p=as;

while(p!=NULL) {

printf(\%s\\t\\t%d\\t\\t%d\\t\\t%c\\n\p->name,p->addr,p->size,p->state); p=p->next; }

printf(\}

void firstfit(JCB *pr) /*Ê×´ÎÊÊÓ¦Ëã·¨¶Ô×÷Òµ·ÖÇø*/

{

r=sub; /*´Ó¿ÕÏбíÍ·¿ªÊ¼Ñ°ÕÒ*/ while(r!=NULL) {

if(((r->size)>(pr->size))&&(r->state=='n')) /*ÓпÕÏзÖÇø´óÓÚ×÷Òµ´óСµÄÇé¿ö*/

{

system(\ system(\

flag=1; /*·ÖÅä³É

¹¦±ê־λÖÃ1*/ q=pr; //qÊÇÒÑ·ÖÅä×÷Òµ¶ÓÁÐÍ·Ö¸Õë q->state='r'; lastsort(); /*¶ÔÒÑ·ÖÅä×÷Òµ°´ÏȺó´ÎÐòÐγÉÁ´±í*/

printf(\×÷Òµ%sµÄ·ÖÇøÎª[%s],Ê×µØÖ·Îª%d.\\n\

break;

}

else

if(((r->size)==(pr->size))&&(r->state=='n')) /*ÓпÕÏзÖÇøµÈÓÚ×÷Òµ´óСµÄÇé¿ö*/

{

pr->addr=r->addr;

flag=1; /*·ÖÅä³É¹¦±ê

־λÖÃ1*/ q=pr;

lastsort(); /*²åÈëÒÑ·ÖÅä×÷Òµ¶ÓÁÐ*/ //¿ÕÏзÖÇøÒÑÍê³É·ÖÅä,Ӧɾ³ý

if(r->pre==NULL) //¸Ã·ÖÇø´¦ÔÚÁ´±íÍ·

{

sub=r->next; r->next->pre=NULL; }

if(r->next==NULL)

//¸Ã·ÖÇø´¦ÔÚÁ´±íβ {

r->pre->next=NULL; }

else

//¸Ã·ÖÇø´¦ÔÚÁ´±íÖмä {

r->pre->next=r->next;

r->next->pre=r->pre; }

printf(\×÷Òµ%sµÄ·ÖÇøÎª

pr->addr=r->addr;

r->size-=pr->size; //

¸üпÕÏзÖÇø´óС r->addr+=pr->size; //¸üпÕÏзÖÇøµØÖ·

38

[%s],Ê×µØÖ·/*ÓÐÏÂÁÚÓÖÓÐÉÏÁÚ*/ { s->size+=pr->size;

r->pre->next=r->next; //ºÏ²¢ÉÏÏÂÁÚÐè°ÑÖ¸ÕëÖ¸ÏòÏÂÁÚµÄÏÂÒ»¸öÇøÓò ÁÚ±ê־λÖÃ1*/

}

isup=1; /*ÉÏ

Ϊ%d.\\n\ break; } else

{ r=r->next;

}

flag=0; }

break;

else /*

if(flag==0) /*×÷Òµ¹ý´óµÄÇé¿ö*/

{

printf(\×÷Òµ%s³¤¶È¹ý´ó£¬ÄÚ´æ²»×㣬·ÖÇø·ÖÅä³ö´í!\\n\ is=1; }

void reclfirst(JCB *pr) /*Ê×´ÎÊÊÓ¦×÷񵂿Óò»ØÊÕËã·¨*/ {

SUB *k; r=sub;

while(r!=NULL) {

}

¼ÌÐøËÑË÷¿ÉÄܵÄÉÏÁÚ*/

{

s=s->next; isup=0; /*

ÉÏÁÚ±ê־λÖÃ0*/ } }

if(isup==0) /*ÓÐÏÂÁÚÎÞÉÏÁÚ*/

{

r->addr=pr->addr;

r->size=pr->size; } break; }

else { r=r->next; λÖÃ0*/

isdown=0; /*ÏÂÁÚ±êÖ¾

if(r->addr==((pr->addr)+(pr->size))) /*×÷Òµ»ØÊÕÇøÓòÓÐÏÂÁÚ*/ {

pr->size+=r->size; s=sub;

isdown=1; /*ÏÂÁÚ±êÖ¾

} }

if(isdown==0) /*ÇøÓòÎÞÏÂÁÚ*/ {

s=sub;

while(s!=NULL)

{

λÖÃ1*/ while(s!=NULL)

{ if(((s->addr)+(s->size))==(pr->addr)) /*ÎÞÏÂÁÚµ«ÓÐÉÏÁÚ*/ if(((s->addr)+(s->size))==(pr->addr)) {

39

s->size+=pr->size;

r->pre->next=k;

k->pre=r->pre; r->pre=k;

k->next=r; } break; } else

{

r=r->next;

/*ÉÏÁÚ¿Õ¼ä+×÷ÒµÊͷſռä=еÄÇøÓò¿Õ¼ä*/ isup=1; /*ÉÏÁÚ±ê־λÖÃ1*/

break; } else {

}

s=s->next;

isup=0; /*ÉÏÁÚ

±ê־λÖÃ0*/

}

} }

if(isup==0) /*ÎÞÏÂÁÚÇÒÎÞÉÏÁÚ*/

{ k=gettype(SUB); /*ÖØÐÂÉú³ÉÒ»¸öеķÖÇø½áµã*/

if(r==NULL) /*зÖÇø²åÈëÄÚ´æ¿Õ¼äβ½Úµã*/

{

s=sub;

strcpy(k->name,pr->name); while(s->next!=NULL) /*пռäÃû×Ö*/ s=s->next;

k->addr=pr->addr; k->size=pr->size; k->state='n'; r=sub;

while(r!=NULL) {

s->next=k; k->pre=s;

k->next=NULL; } }

Óò

%s

¼º

ȯ

if((r->addr)>(k->addr)) /*°´·ÖÇøÊ×µØÖ·ÅÅÁÐ,»ØÊÕÇøÓò²åÔÚºÏÊʵÄλÖÃ*/

{

if(r==sub)

}

printf(\ÇøÊÕ.\}

/*зÖÇø²åÈëÄÚ´æ¿Õ¼äÊ×½Úµã*/ {

k->next=r; r->pre=k; sub=k;

void print() //³õʼ»¯½çÃæ {

printf(\

printf(\*************\\n\

printf(\Ö÷´æ¿Õ¼äµÄ·ÖÅäÓë»ØÊÕÑÝʾ\\n\

printf(\ <<Ê×´ÎÊÊÓ¦Ëã·¨>>\\n\

printf(\

/*¸üпÕÏжÓÁÐÊ×Ö¸Õë*/ k->pre=NULL;

}

else

/*зÖÇø²åÈëÄÚ´æ¿Õ¼äÖмä*/ {

40