Least Recently Used algorithm program code (LRU)

Share:
Program:

#include<stdio.h>
int least(int arr[],int x)
{

int i,n=arr[0],pos=0;

for(i=0;i<x;i++)

{
  if(arr[i]<n)
 
{
    n=arr[i];
 
pos=i;
 
}

}
return pos;
}
int isavailable(int arr[],int k,int y)
{

int j;
 for(j=0;j<y;j++)

{

if(arr[j]==k)

 {
   
return 1;
 
 }
 }

 return 0;
}
int isempty(int arr[],int n,int brr[],int a,int z)
{

int i;
 for(i=0;i<z;i++)

{
 
if(arr[i]==-1)
 
   {
     
arr[i]=n;
 
   brr[i]=a++;

     return 1;
 
  }
  }

 return 0;
}

int main()
{

int i,b,no,flag[100],p[100],j,k,m[100],c=0,mn,pf=0;
 printf("Enter the number of memory slots:\n");

scanf("%d",&mn);

printf("Enter the number of pages:");
 scanf("%d",&no);

printf("Enter the pages:");

for(i=0;i<no;i++)

{
 
scanf("%d",&p[i]);

 }

for(i=0;i<mn;i++)

 {
 
flag[i]=0;

 }

for(i=0;i<mn;i++)

 {

  m[i]=-1;

 }
printf("Intially the memory slots are:\n");
for(i=0;i<mn;i++)
{

printf("%d",m[i]);
}
printf("\n");

for(i=0;i<no;i++)
{
 
if(isavailable(m,p[i],mn))

  {
 
  for(k=0;k<mn;k++)

     {
       if(m[k]==p[i])
   
    {
          flag[k]=c++;
   
    break;
   
   }
 
  }
 
 }

else if(isempty(m,p[i],flag,c,mn))

  {
 
 c=c+1;

  pf++;

 }
   else
 
  {
   
 b=least(flag,mn);

     m[b]=p[i];
 
   pf++;
 
  flag[b]=c++;
 
   }

for(k=0;k<mn;k++)

{

printf("%d",m[k]);
 }

printf("\n");
}
printf(" number of page fault : %d\n",pf);
return 0;

}