您的位置:首页 > 编程语言 > Java开发

java版本存储器管理LRU

2016-05-19 09:57 465 查看
import java.util.Scanner;
class Node {
protected Node next; //指针域
protected int data;//数据域

public Node( int data) {
this. data = data;
}
//显示此节点
public void display() {
System. out.print( data + " ");
}
}
//单链表
public class shiyan2 {
public Node first; // 定义一个头结点
private int pos = 0;// 节点的位置

public shiyan2() {
this. first = null;
}
// 插入一个头节点
public void addFirstNode( int data) {
Node node = new Node(data);
node. next = first;
first = node;
}
// 根据节点的data删除节点
public Node deleteByData( int data) {
Node current = first;
Node previous = first; //记住上一个节点
while (current. data != data) {
if (current. next == null) {
return null;
}
previous = current;
current = current. next;
}
if(current == first) {
first = first. next;
} else {
previous. next = current. next;
}
return current;
}
// 删除任意位置的节点
public Node deleteByPos( int index) {
Node current = first;
Node previous = first;
while ( pos != index) {
pos++;
previous = current;
current = current. next;
}
if(current == first) {
first = first. next;
} else {
pos = 0;
previous. next = current. next;
}
return current;
}
// 显示出所有的节点信息
public void displayAllNodes() {
Node current = first;
while (current != null) {
current.display();
current = current. next;
}
System. out.println();
}
// 根据数据查找节点信息
public int find( int data) {
Node current = first;
while (current. data != data) {
if (current. next == null)
return 0;
current = current. next;
}
return 1;
}
public int getLength(){
int result = 0;
Node current = first;
while(null!=current){
result++;
current = current.next;
}
return result;
}
}
//测试类
class ceshi {
public static void main(String[] args) {
shiyan2 sy=new shiyan2();
Scanner in =  new Scanner(System.in);
System.out.println("请输入你要访问的次数:");
int n = in.nextInt();
int d=0;
for(int i=0;i<n;i++){
System.out.println("请你输入你要访问的页面:");
int m = in.nextInt();
if(i==0){
sy.addFirstNode(m);
}else{
if(sy.find(m)==0){
sy.addFirstNode(m);
}else{
d++;
sy.deleteByData(m);
sy.addFirstNode(m);
}
}
if(sy.getLength()==6){
sy.deleteByPos(sy.getLength()-1);
}
sy.displayAllNodes();
System.out.println("长度"+sy.getLength());

}
System.out.println("置换了"+d+"次");

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: