internal static void Remove(QueueElement element, QueuedAVLTree <TKey, TValue> tree, bool callFromQueue = false)
            {
                element.next.previous = element.previous;
                element.previous.next = element.next;

                if (callFromQueue && element.linkedNode != null)
                {
                    AVLNode.RemoveNode(element.linkedNode, tree, true);
                }
            }
示例#2
0
            internal static bool FindRemoveItem(AVLNode headNode, object[] HashMap, int hash, KeyValuePair <TKey, TValue> item, ref int elementCount)
            {
                int compare = item.Key.CompareTo(headNode.key);

                while (true)
                {
                    if (compare < 0)
                    {
                        headNode = headNode.left;

                        if (headNode != null)
                        {
                            compare = item.Key.CompareTo(headNode.key);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else if (compare > 0)
                    {
                        headNode = headNode.right;

                        if (headNode != null)
                        {
                            compare = item.Key.CompareTo(headNode.key);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        if (headNode.value.Equals(item.Value))
                        {
                            AVLNode.RemoveNode(headNode, HashMap, hash, ref elementCount);

                            return(true);
                        }

                        return(false);
                    }
                }
            }
            internal static bool FindRemoveItem(AVLNode node, QueuedAVLTree <TKey, TValue> tree, KeyValuePair <TKey, TValue> item, ref int elementCount)
            {
                int compare = item.Key.CompareTo(node.key);

                while (true)
                {
                    if (compare < 0)
                    {
                        node = node.left;

                        if (node != null)
                        {
                            compare = item.Key.CompareTo(node.key);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else if (compare > 0)
                    {
                        node = node.right;

                        if (node != null)
                        {
                            compare = item.Key.CompareTo(node.key);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        if (node.value.Equals(item.Value))
                        {
                            AVLNode.RemoveNode(node, tree);

                            return(true);
                        }

                        return(false);
                    }
                }
            }
示例#4
0
            internal static bool FindRemoveKey(AVLNode headNode, object[] HashMap, int hash, TKey key, ref int elementCount)
            {
                int compare = key.CompareTo(headNode.key);

                while (true)
                {
                    if (compare < 0)
                    {
                        headNode = headNode.left;

                        if (headNode != null)
                        {
                            compare = key.CompareTo(headNode.key);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else if (compare > 0)
                    {
                        headNode = headNode.right;

                        if (headNode != null)
                        {
                            compare = key.CompareTo(headNode.key);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        AVLNode.RemoveNode(headNode, HashMap, hash, ref elementCount);

                        return(true);
                    }
                }
            }
            internal static bool FindRemoveKey(AVLNode node, QueuedAVLTree <TKey, TValue> tree, TKey key, ref int elementCount)
            {
                int compare = key.CompareTo(node.key);

                while (true)
                {
                    if (compare < 0)
                    {
                        node = node.left;

                        if (node != null)
                        {
                            compare = key.CompareTo(node.key);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else if (compare > 0)
                    {
                        node = node.right;

                        if (node != null)
                        {
                            compare = key.CompareTo(node.key);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        AVLNode.RemoveNode(node, tree);

                        return(true);
                    }
                }
            }