public void Remove(K key) { HListNode <K, V> Temp = _Head; HListNode <K, V> TempPrev = null; Func <K, K, bool> IsEqual; if (_Comparer == null) { IsEqual = (k1, k2) => k1.Equals(k2); } else { IsEqual = (k1, k2) => _Comparer.Equals(k1, k2); } while (!IsEqual(Temp.Key, key)) { TempPrev = Temp; Temp = Temp.Next; } if (Temp == null) { throw new Exception("No Key Exists"); } if (TempPrev == null) { _Head = Temp.Next; } else { TempPrev.Next = Temp.Next; } }
public void InsertFront(K key, V value) { if (this.ContainKey(key)) { throw new Exception("Key already exists"); } _Head = new HListNode <K, V>(key, value, _Head); }
public V GetValue(K key) { if (_Head == null) { throw new Exception("Key doesn't exist"); } HListNode <K, V> Temp = _Head; HListNode <K, V> TempPrev = null; Func <K, K, bool> IsEqual; if (_Comparer == null) { IsEqual = (k1, k2) => k1.Equals(k2); } else { IsEqual = (k1, k2) => _Comparer.Equals(k1, k2); } while (!IsEqual(Temp.Key, key)) { TempPrev = Temp; Temp = Temp.Next; if (Temp == null) { break; } } if (Temp == null) { throw new Exception("Key doesn't exist"); } else { return(Temp.Value); } }
public bool ContainKey(K key) { if (_Head == null) { return(false); } HListNode <K, V> Temp = _Head; HListNode <K, V> TempPrev = null; Func <K, K, bool> IsEqual; if (_Comparer == null) { IsEqual = (k1, k2) => k1.Equals(k2); } else { IsEqual = (k1, k2) => _Comparer.Equals(k1, k2); } while (!IsEqual(Temp.Key, key)) { TempPrev = Temp; Temp = Temp.Next; if (Temp == null) { break; } } if (Temp == null) { return(false); } else { return(true); } }
public HSLinkList(IEqualityComparer <K> comparer) { _Head = null; //_Size = 0; _Comparer = comparer; }
public HListNode(K key, V value, HListNode <K, V> next) { this.Next = next; this.Value = value; this.Key = key; }