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; } } }
public LinkedSetItem(string value, LinkedSetItem prev, LinkedSetItem next = null) { Value = value; Prev = prev; Next = next; }
public void DeleteAll() { Elements = new List <LinkedSetItem> [MaxHashSize]; _last = null; Begin = null; Size = 0; }
public LinkedSet(string key) { this.Key = key; this.Elements = new List <LinkedSetItem> [MaxHashSize]; Begin = null; _last = null; Size = 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 { } }