Пример #1
0
        private void RemoveTail()
        {
            if (tail == null)
            {
                return;
            }

            index.Remove(tail.Key);

            if (head == tail)
            {
                head = tail = null;

                return;
            }

            tail.Pre.Next = null;
            tail          = tail.Pre;
        }
Пример #2
0
        private DListNode <TKey, TValue> InsetToHead(TValue value)
        {
            var node = new DListNode <TKey, TValue>()
            {
                Value = value
            };

            if (head == null)
            {
                head = node;
                tail = node;
            }
            else
            {
                node.Next = head;
                head.Pre  = node;
                head      = node;
            }

            return(node);
        }
Пример #3
0
        private void MoveToHead(DListNode <TKey, TValue> node)
        {
            if (node == head)
            {
                return;
            }

            node.Pre.Next = node.Next;
            if (node == tail)
            {
                tail = node.Pre;
            }
            else
            {
                node.Next.Pre = node.Pre;
            }

            node.Pre  = null;
            node.Next = head;

            head.Pre = node;

            head = node;
        }