public void InsertAt(DoublyLinkedKeyValue <K, V> element, int position) { if (Count == 0) { first = element; last = element; Count++; return; } if (position == Count) { last.Next = element; element.Previous = last; last = element; Count++; return; } DoublyLinkedKeyValue <K, V> iterator = first; int i = 0; while (i++ < position) { iterator = iterator.Next; } iterator.Previous.Next = element; element.Previous = iterator.Previous; element.Next = iterator; iterator.Previous = element; Count++; }
public DoublyLinkedKeyValue <K, V> getElement(K element) { DoublyLinkedKeyValue <K, V> iterator = first; while (!iterator.ID.Equals(element)) { iterator = iterator.Next; } return(iterator); }
public DoublyLinkedKeyValue <K, V> getElementAt(int position) { DoublyLinkedKeyValue <K, V> iterator = first; int i = 0; while (i++ < position) { iterator = iterator.Next; } return(iterator); }
public void InserBefore(DoublyLinkedKeyValue <K, V> old, DoublyLinkedKeyValue <K, V> novo) { if (old == first) { InserBeforeFirst(novo); } DoublyLinkedKeyValue <K, V> iterator = first; int i = 0; while (!iterator.Equals(old)) { iterator = iterator.Next; i++; } InsertAt(novo, i); }
public void InserAfter(DoublyLinkedKeyValue <K, V> old, DoublyLinkedKeyValue <K, V> novo) { if (old == last) { Add(novo); } DoublyLinkedKeyValue <K, V> iterator = first; int i = 0; while (!iterator.Equals(old)) { iterator = iterator.Next; i++; } InsertAt(novo, i + 1); }
public void removeElementAt(int position) { if (Count == 1) { last = null; first = null; Count--; return; } DoublyLinkedKeyValue <K, V> iterator = first; int i = 0; while (i++ < position) { iterator = iterator.Next; } iterator.Previous.Next = iterator.Next; iterator.Next.Previous = iterator.Previous; Count--; }
public void InserBeforeFirst(DoublyLinkedKeyValue <K, V> element) { InsertAt(element, 0); }
public void Add(DoublyLinkedKeyValue <K, V> element) { InsertAt(element, Count); }