package studyJava;
class FIFO{
/*
* 先进先出算法
* N:内存块的个数
* array:内存块
* size:页面数目
* */
private static final int N=3;
private int size;
Object[] array=new Object[N];
public boolean isEmpty(){
if(size==0)
return true;
else
return false;
}
//
public boolean isFully(){
if(size>=N)
return true;
else
return false;
}
/*
* 页面数目
* */
public int size(){
return size;
}
/*
* 查找元素O在数组array中的位置
* */
public int indexOfElement(Object o){
for(int i=0;i<N;i++){
if(array[i]==o)
return i;
}
return -1;//否则o不在array中
}
/*
* 页面转换
* */
public Object trans(Object o){
Object e=null;
int t=0;
if(indexOfElement(o)!=-1){
t=indexOfElement(o);
for (int i = t; i < size-1; i++) {
array[i]=array[i+1];
}
array[size-1]=o;
}else{
if(!isFully()){
array[size]=o;
size++;
}else{
for (int i = 0; i < size-1; i++) {
array[i]=array[i+1];
}
array[size-1]=o;
}
}
if(t==-1)
return null;
else
return array[t];
}
/*
* 输出内存块中的各数据
* */
public void showMemoryBlock(){
for (int i = 0; i < size; i++) {
System.out.print(array[i]+" ");
}
System.out.println();
}
}
public class Main{
public static void main(String[] args) {
Integer[] in={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};
FIFO fifo=new FIFO();
for(int i=0; i<in.length; i++) {
fifo.trans(in[i]);
fifo.showMemoryBlock();
}
}
}