public void Push(K key, T item) { var cur = _header; for (int i = 0; i < _size; i++) { if (cur.Key.CompareTo(key) == 0) { throw new ArgumentException("An item with the same key has already been added"); } cur = cur.Next; } NodeWithKey <K, T> node = new NodeWithKey <K, T>(key, item); if (_size == 0) { _header = node; _trailer = node; } else { _trailer.Next = node; _trailer = node; } _size++; }
public void Remove(K key) { if (_size == 0) { return; } if (key.CompareTo(_header.Key) == 0) { _header = _header.Next; _size--; return; } bool check = false; var cur = _header; NodeWithKey <K, T> pre = null; for (int i = 0; i < _size; i++) { pre = cur; cur = cur.Next; if (cur.Key.CompareTo(key) == 0) { check = true; break; } } if (check) { pre.Next = cur.Next; if (key.CompareTo(_trailer.Key) == 0) { _trailer = pre; } cur = null; _size--; } }