双向链表操作---LRU设计

    public class DlinkedNode{
    private int value;
    private int key;
    private DlinkedNode pre;
    private DlinkedNode next;
    public DlinkedNode(int key,int value){
        this.key = key;
        this.value = value;
    }
    DlinkedNode(){}
    }
   //移动到头
    private void moveToHead(DlinkedNode node){
         
         remove(node);
         addToHead(node);
    }
   //删除节点
    private void remove(DlinkedNode node){
        //只关心 node的前后指针给了谁
        node.pre.next = node.next;
        node.next.pre = node.pre;

    }
    private void addToHead(DlinkedNode node){

      //先node前后指针构成
        node.pre = head;
        node.next = head.next;
      //在node的指针给谁
        head.next.pre = node;
        head.next = node;
    }

 // 移除尾节点
    private void removeTail(){
        DlinkedNode re = tail.pre;
        remove(re);
    }

你可能感兴趣的:(数据结构与算法)