コード例 #1
0
        void movetofront(CacheNode node)
        {
            if (node == head)
            {
                return;
            }

            if (node == tail)
            {
                tail = tail.prev;// tail is moving once step behind
            }

            if (node.next != null)
            {
                node.next.prev = node.prev;
            }

            node.prev.next = node.next;
            node.prev      = null;
            node.next      = head;
            head.prev      = node;
            head           = node;
        }
コード例 #2
0
        void movetoend(CacheNode node)
        {
            if (node == head)
            {
                return;
            }

            if (node == tail)
            {
                tail = tail.prev;
            }

            if (node.next != null)
            {
                node.next.prev = node.prev;
            }

            node.prev.next = node.next;
            node.prev      = null;
            node.next      = head;
            head.prev      = node;
            head           = node;
        }