Exemple #1
0
                public void Push(string value)
                
        {
                        int hashCode = Hash(value);
                        // Console.WriteLine(value);
                        LinkedSetItem item = new LinkedSetItem(value, _last);

                        if(Elements[hashCode] == null)
                            Elements[hashCode] = new List <LinkedSetItem>();
                        if(!Elements[hashCode].Exists(i => i.Value == item.Value))
                         {
                                Elements[hashCode].Add(item);
                                Size++;
                                if(_last != null)
                                 {
                                        _last.Next = item;
                                    
                }
                 
                                    _last = item;

                 
                                if(Begin == null)
                                
                {
                                        Begin = item;
                                    
                }

                            
            }
                         
                        
        }
Exemple #2
0
         public LinkedSetItem(string value, LinkedSetItem prev, LinkedSetItem next = null)
         
 {
                 Value = value;
                 Prev  = prev;
                 Next  = next;
             
 }
Exemple #3
0
         public void DeleteAll()
         
 {
                 Elements = new List <LinkedSetItem> [MaxHashSize];
                 _last    = null;
                 Begin    = null;
                 Size     = 0;
             
 }
Exemple #4
0
         public LinkedSet(string key)
         
 {
                 this.Key      = key;
                 this.Elements = new List <LinkedSetItem> [MaxHashSize];
                 Begin         = null;
                 _last         = null;
                 Size          = 0;
             
 }
Exemple #5
0
                public void Delete(string value)
                
        {
            try
            {
                int hashCode = Hash(value);
                if (Elements[hashCode].Exists(i => i.Value == value))
                {
                    LinkedSetItem item = Elements[hashCode].Find(i => i.Value == value);
                    Size--;
                    Elements[hashCode].RemoveAll(i => i.Value == value);
                    if (item.Prev != null)
                    {
                        item.Prev.Next = item.Next;
                    }

                    if (item.Next != null)
                    {
                        item.Next.Prev = item.Prev;
                    }

                    if (item.Value == _last?.Value)
                    {
                        _last = item.Prev;
                    }

                    if (item.Value == Begin?.Value)
                    {
                        Begin = item.Next;
                    }
                }
            }
            catch
            {
            }
                    
        }