¡¶×÷ÒµµÇ¼ÇÉè¼Æ¡·
Êý¾Ý½á¹¹£ºÊ¹ÓÃÁ´Ö¸Õë°ÑËùÓеÄ×÷ÒµÁ´³ÉÒ»ÌõÁ´£¬ÓÃÖ¸ÕëʵÏÖ·ÖÇø·ÖÅäºÍÁ´½Ó¡£ ³õʼ×÷Òµ¶ÓÁУº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
״̬
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