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

¡¶×÷ÒµµÇ¼ÇÉè¼Æ¡·

Êý¾Ý½á¹¹£ºÊ¹ÓÃÁ´Ö¸Õë°ÑËùÓеÄ×÷ÒµÁ´³ÉÒ»ÌõÁ´£¬ÓÃÖ¸ÕëʵÏÖ·ÖÇø·ÖÅäºÍÁ´½Ó¡£ ³õʼ×÷Òµ¶ÓÁУºreadyÖ¸ÕëÖ¸Ïò¶ÓÁÐÊ×µØÖ·

ÒÑ·ÖÅä×÷Òµ¶ÓÁУºasÖ¸ÏòÒÑ·ÖÅä×÷Òµ¶ÓÁÐÊ×µØÖ· ×÷Òµ´óС£º ¼Ç¼×÷Òµ¿éÐèÇó´óС

×÷ҵ״̬ w£ºµÈ´ý·ÖÅä r£º×÷ÒµÒÑ·ÖÅäºÏÊÊÄÚ´æ¿é ×÷Òµ·ÖÅäÄÚ´æÊ×Ö·£º¼Ç¼·ÖÅä·ÖÇøÊ×µØÖ· ×÷ÒµÏÂÒ»Ö¸Õ룺Á´½ÓÏÂÒ»¸ö×÷Òµ struct jcb{

char name[10]; //×÷ÒµÃû×Ö char state; //×÷ҵ״̬

int ntime; //ËùÐèʱ¼ä

int size; //ËùÐè¿Õ¼ä´óС

int addr; //Ëù·ÖÅä·ÖÇøµÄÊ×µØÖ· struct jcb *next; //×÷Òµ¶ÓÁÐÏÂÒ»Ö¸Õë

} *ready =NULL, *p,*q,*as=NULL; //×÷Òµ¶ÓÁÐÖ¸Õëready,ÒÑ·ÖÅä×÷Òµ¶ÓÁÐÖ¸Õëas typedef struct jcb JCB

×÷Òµ·ÖÅä¹ý³Ì£º

µü´ú²éÕÒÖ÷´æ¿Õ¼ä ²éÕÒÍê±ÏÍ˳ö Ö÷´æ¿Õ¼ä>×÷Òµ´óС£¿ Y ·ÖÅä³É¹¦ ÐÞ¸ÄÓйØÊý¾Ý½á¹¹ N Ö÷´æ¿Õ¼ä=×÷Òµ´óС£¿ ¼ÌÐø²éÕÒÏÂÒ»×÷Òµ Y ·ÖÅä³É¹¦ N Ö÷´æ¿Õ¼ä<×÷Òµ´óС£¿ Y ·ÖÅäʧ°Ü ÐÞ¸ÄÓйØÊý¾Ý½á¹¹ 33

3¡¢ ³ÌÐòÁ÷³Ìͼ

4¡¢ ³ÌÐòÔ´´úÂë

#include #include #include #include #define

״̬

int ntime; //ËùÐè

ÏÔʾ¿ÕÏзÖÇø ×÷Òµ·ÖÅä ×÷Òµ»ØÊÕ Í˳ö Ö÷²Ëµ¥ Ö÷´æ×Ô¶¯³õʼ»¯ Ö÷´æÊÖ¶¯·ÖÅä ¿ªÊ¼ µ÷ÓÃÏÔʾº¯Êý Ê×´ÎÊÊÓ¦Ëã·¨¶Ô×÷Òµ·ÖÅä¿Õ¼ä »ØÊÕÖ¸¶¨µÄ×÷Òµ gettype(type)

ʱ¼ä int size; //ËùÐè¿Õ¼ä´óС

int addr; //Ëù·ÖÅä·ÖÇøµÄÊ×µØÖ· struct jcb *next; //×÷Òµ¶ÓÁÐÏÂÒ»Ö¸Õë }

*ready

=NULL,

(type*)malloc(sizeof(type))

#define NULL 0

int num,num2; //Òªµ÷¶ÈµÄ×÷ÒµÊýºÍÒª»ØÊÕµÄÇøÓòÊý

int m=0; //ÒÑ·ÖÅä×÷ÒµÊý int flag; //·ÖÅä³É¹¦±êÖ¾ int isup,isdown; //»ØÊÕÇøÓò´æÔÚÉÏÁÚºÍÏÂÁڵıêÖ¾ int is=0;

struct jcb{ Ãû×Ö

char name[10]; //×÷Òµchar state; //×÷Òµ

*p,*q,*as=NULL; //×÷Òµ¶ÓÁÐÖ¸Õëready,ÒÑ·ÖÅä×÷Òµ¶ÓÁÐÖ¸Õëas

typedef struct jcb JCB;

struct subarea{ //·ÖÇø¿é char name[10];

34

int addr; // first=first->next;

second=second->next; } }

if(insert==0)first->next=s;

·ÖÇøÊ×µØÖ· int size; //·ÖÇø´óС char state; //·ÖÇø×´Ì¬

struct subarea *pre; //

/*²åÔÚ¶Óβ*/

} }

void firstsort() /*¶Ôн¨×÷Òµ¶ÓÁа´´ÓÏȵ½ºóÁ¬½Ó*/ {

JCB *first;

if(ready==NULL) ready=p; else

{

first=ready;

while(first->next!=NULL){ first=first->next; } first->next=p; p->next=NULL; } }

void lastsort() /*¶ÔÒÑ·ÖÅä×÷Òµ¶ÓÁа´ÏȺó´ÎÐòÁ¬½Ó*/ {

JCB *fir;

if(as==NULL) as=q; else {

fir=as;

while(fir->next!=NULL){ fir=fir->next; } fir->next=q; q->next=NULL; } m++; }

¿ÕÏзÖÇøÇ°Ò»Ö¸Õë struct subarea *next; //¿ÕÏзÖÇøºóÒ»Ö¸Õë

} *sub=NULL,*r,*s,*cur; //¿ÕÏзÖÇø¶ÓÁÐÖ¸Õësub,µ±Ç°·ÖÇøÊ×Ö¸Õëcur

typedef struct subarea SUB;

void sort_sub() /*¶Ô¿ÕÏзÖÇø°´´ÓСµ½´óÅÅÐò*/ { SUB *first,*second; int insert=0;

if((sub==NULL)||((s->size)<(sub->size))) /*²åÔÚ¶ÓÁÐÖ®Ê×*/ { s->next=sub;

sub=s; }

else { first=sub; /*ѰÕÒÊʵ±µÄλÖòåÈë*/ second=first->next;

while(second!=NULL) {

if((s->size)<(second->size))

{

s->next=second; first->next=s; second=NULL; insert=1; } else {

35

void initsort() /*°´ÏȺó´ÎÐò½¨Á¢¿Õ¼äË«ÏòÁ´±í*/ { SUB *temp;

if(sub==NULL) { } else { }

temp=sub;

while(temp->next!=NULL) {

temp=temp->next; sub=r;

sub->pre=NULL;

firstsort(); /* µ÷ÓÃfirstsortº¯Êý¶Ô×÷Òµ¶ÓÁа´´ÓÏȵ½ºóÅÅÐò*/ }

printf(\°´ÈÎÒ»¼ü¼ÌÐø......\\n\ getchar(); }

void input2() /*½¨Á¢Òª»ØÊÕÇøÓòµÄº¯Êý*/ {

JCB *k; int has;

q=gettype(JCB);

printf(\ÊäÈëÇøÓòÃû(×÷ÒµÃû):\ scanf(\

p=as; //asÊÇÒÑ·ÖÅä×÷Òµ¶ÓÁÐÊ×Ö¸Õë

while(p!=NULL) {

if(strcmp(p->name,q->name)==0) /*ÔÚÒÑ·ÖÅä×÷Òµ¶ÓÁÐÖÐѰÕÒ*/

{

q->addr=p->addr; q->size=p->size;

has=1; /*ÊäÈë×÷ÒµÃû´æÔÚ±ê־λ*/

if(p==as) as=p->next; /*ÔÚÒÑ·ÖÅä×÷Òµ¶ÓÁÐÖÐɾ³ý¸Ã×÷Òµ*/ else {

k=as;

while(k->next!=p)

}

temp->next=r; r->pre=temp; r->next=NULL;

}

void input() /* ½¨Á¢×÷Òµ¿ØÖƿ麯Êý*/ {

int i;

printf(\ÇëÊäÈëÒªµ÷¶ÈµÄ×Ü×÷ÒµÊý:\

scanf(\ for(i=0;i

printf(\×÷ÒµºÅNo.%d:\\n\ p=gettype(JCB);

printf(\ÊäÈë×÷ÒµÃû:\ scanf(\ printf(\ÊäÈë×÷ÒµµÄ´óС:\ scanf(\

printf(\ÊäÈë×÷ÒµËùÐèÔËÐÐʱ¼ä:\

scanf(\ p->state='w'; p->next=NULL;

k=k->next; k->next=k->next->next; /*ɾ³ý*/ }

printf(\Êä³ö¸Ã×÷ÒµÊ×µØÖ·:%d\\n\

printf(\Êä³ö¸Ã×÷Òµ´óС:%d\\n\\n\ q->next=NULL; break; } else

36