Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21776
  • 博文数量: 3
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 83
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-25 09:25
文章分类
文章存档

2013年(3)

我的朋友

分类: Windows平台

2013-05-23 18:14:33

 #include
 #include
 #include
#include
//#include
//using namespace std;
 #define LEHGRTH  100
#define MAX_YE_NUM 99999
 typedef struct {
         int *pBase;  //存储的元素第一个地址(基地址)
          int len;     //当前数组中的元素最大个数
          int cnt;     //当前有效数组元素的个数
} Arr;
 typedef struct {
 int ye;
 int count;
 }yemian;

 void init_arr(Arr *pArr); //初始化
 bool append_arr(Arr *parr,int val);//追加
 bool delete_arr(Arr *parr,int pos,int *pval);  //删除元素
 bool is_empty(Arr *arr); //是否为空
 bool is_full(Arr *arr);  //是否为满

 void FIFO(Arr L);
 void lru( Arr L);
 bool if_jin(int a){
 
  if(a == 35){
 
  return true;
 
  }else{
  return false;

  }
}
 int max(int a,int b,int c,int d){
 if(a  if(a  if(a  return a;

 }
int main(void){
         Arr arr;
          init_arr(&arr);
    int a =0;
    //const char *s="int";
   
    printf("请输入要分配的页面\n");
    while(a!=MAX_YE_NUM){
    
    scanf("%d",&a);
  
    append_arr(&arr,a);
   
    }
FIFOFIFO//FIFO(arr);
    lru(arr);
  system("pause");
 }

void lru(Arr L){
 
 yemian a[4];
 int j ;
 for(int i = 0;i<4;i++){
  a[i].count =0;
  a[i].ye =-1;
}
 while((*L.pBase)!=MAX_YE_NUM){
 delete_arr(&L,1 ,&j);
 for(int i=0;i<4;i++){
  if(a[i].ye ==j){
   for(int j=0;j<4;j++){
    a[j].count ++;
   }
   a[i].count=0;
   goto end; 
  
  }
 }
int maxcount=max(a[0].count ,a[1].count ,a[2].count ,a[3].count );
 for(int i=0;i<4;i++){
  if(a[i].count ==maxcount){
   a[i].ye =j;
   a[i].count =0;
   for(int p=0;p<4;p++){
    if(a[p].ye !=a[i].ye ){
     a[p].count ++;
    
    }   
   }
  break;
  
  }

 }

 end: ;
 for(int i = 0 ;i<4 ; i++){
   if(a[i].ye !=-1){
   printf("%d\t",a[i].ye );
   
   }
 }
 printf("\n");

 }

}

void  FIFO(Arr L){
int a[4]={-1,-1,-1,-1};
 int j;
 while(*L.pBase != MAX_YE_NUM){
  printf("页面调度方式为\n");
  if(delete_arr(&L,1 ,&j)){
  a[0]=j;
  }else{
  printf("错误");
  
  }
    
  for(int i = 0 ;i<4 ; i++){
   if(a[i]!=-1){
   printf("%d\t",a[i]);
   
   }
  
  }
   for(int i= 4 - 2;i >= 0;i --)    /*自后向前置入*/  
   {      
    a[i + 1] = a [i];   
   }
 printf("\n");
 }
  delete_arr(&L,1 ,&j);
}
void init_arr(Arr *pArr){

 pArr->pBase=(int  *)malloc(sizeof(int)*LEHGRTH );
 if(pArr->pBase==NULL){
  printf("Auto distribute is wrong");
  exit(-1);
 }else{
  pArr->len=LEHGRTH ;
  pArr->cnt=0;
  }

 return ;
 }


 bool is_empty(Arr *arr){

 if (arr->cnt==0){
   return true;
  }else {
   return false;
  }

}

bool append_arr(Arr *parr,int val){
  int *newbase;
 if(is_full(parr)){
  if(!(newbase = (int *)realloc(parr->pBase,(parr->len+LEHGRTH)*sizeof(int)))){
   printf("erroe");
  //return false;
  }
  }
   parr->pBase[parr->cnt]=val;
   ++parr->cnt;
   return true;
 
 }
 bool is_full(Arr *parr){
  if(parr->cnt==parr->len){
   return true;
  }else {
   return false;
  }
 }
 
bool delete_arr(Arr *parr,int pos,int *pval/*传输返回值*/){
  if(is_empty(parr)||pos<1||pos>=parr->cnt){
   return false;
 
  }
  *pval = parr->pBase[pos-1];
  for(int i = pos - 1;i<=parr->cnt;i++){
   parr->pBase[i]=parr->pBase[i+1];
  }
  parr->cnt--;
  return true;
 }

 

阅读(1596) | 评论(0) | 转发(0) |
0

上一篇:数据结构之数组

下一篇:没有了

给主人留下些什么吧!~~