optimal最佳页面置换算法怎么求最长未使用的页面?用java实现 190
就是我打问号的那个地方,求解算法是怎么样的。importjava.util.LinkedList;importjava.util.List;importjava.util...
就是我打问号的那个地方,求解算法是怎么样的。
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Optimal{
static int volum;// 栈的容量
static List<Integer>list=new LinkedList<Integer>();
//链表用来模拟栈存放页面
static int[]visit;//要访问的页面数组
static int count=0;//记录缺页次数
// static int oldpoint;//记录最久的页面下标
static int b;//记录中断次数
public static void main(String []args)
{
Scanner sc = new Scanner(System.in);
System.out.print("请输入栈的容量:");
volum=sc.nextInt();
System.out.print("请输入总页面数目:");
int n=sc.nextInt();
visit=new int[n];
System.out.println("请输入各个页的页面号码:");
for(int i=0;i<n;i++)
visit[i]=sc.nextInt();
sFIFO();//调用最近最久未使用算法
System.out.println("置换页面的数目为:"+count);
System.out.println("中断次数为:"+b);
}
public static void sFIFO()
{
int index=0; //页面指针初始值为0
while(index<visit.length)
{
boolean flag=false;
if(list.size()<=volum)
{
for(int i=0;i<list.size();i++)
{
if((int)(list.get(i))==visit[index])
{
flag=true;
break;
}
}
if(!flag)
{
if(list.size()<volum)
{//如果栈未满,而且此页面没有在栈中,就将它入栈
list.add(visit[index]);
}
else
{//如果栈已经满了,且该页面号码没有在栈中,就把栈底元素删除,将新页插入
//????????????这段怎么写
int temp=
count++;
b=count+3;
System.out.println("开始换页了,将栈底的"+temp+"换出");
}
}
System.out.print("经过第"+(index+1)+"个页面的栈内容为");
for(int k=0;k<list.size();k++)
System.out.print(list.get(k)+" ");
System.out.println();
index++;
}
}
}} 展开
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Optimal{
static int volum;// 栈的容量
static List<Integer>list=new LinkedList<Integer>();
//链表用来模拟栈存放页面
static int[]visit;//要访问的页面数组
static int count=0;//记录缺页次数
// static int oldpoint;//记录最久的页面下标
static int b;//记录中断次数
public static void main(String []args)
{
Scanner sc = new Scanner(System.in);
System.out.print("请输入栈的容量:");
volum=sc.nextInt();
System.out.print("请输入总页面数目:");
int n=sc.nextInt();
visit=new int[n];
System.out.println("请输入各个页的页面号码:");
for(int i=0;i<n;i++)
visit[i]=sc.nextInt();
sFIFO();//调用最近最久未使用算法
System.out.println("置换页面的数目为:"+count);
System.out.println("中断次数为:"+b);
}
public static void sFIFO()
{
int index=0; //页面指针初始值为0
while(index<visit.length)
{
boolean flag=false;
if(list.size()<=volum)
{
for(int i=0;i<list.size();i++)
{
if((int)(list.get(i))==visit[index])
{
flag=true;
break;
}
}
if(!flag)
{
if(list.size()<volum)
{//如果栈未满,而且此页面没有在栈中,就将它入栈
list.add(visit[index]);
}
else
{//如果栈已经满了,且该页面号码没有在栈中,就把栈底元素删除,将新页插入
//????????????这段怎么写
int temp=
count++;
b=count+3;
System.out.println("开始换页了,将栈底的"+temp+"换出");
}
}
System.out.print("经过第"+(index+1)+"个页面的栈内容为");
for(int k=0;k<list.size();k++)
System.out.print(list.get(k)+" ");
System.out.println();
index++;
}
}
}} 展开
2个回答
展开全部
哥哥 你什么地方用栈了啊??? 你用的好像是List集合吧
更多追问追答
追问
亲,你不懂不要回答我呀,我这个是list模拟栈的。你太打击我的激情了,还以为有解答了的说
追答
呵呵 那就把List里面最后元素去掉即OK了
list.remove(list.size-1);
list.add(visit[index]);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-07-02
展开全部
就是我打问号的那个地方,求解算法是怎么样的。 import...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询