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; }
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); }
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; }