public override T Remove(T value) { Assertion.Pre(value != null); SinglyLinkedListElement <T> finger = this.head; SinglyLinkedListElement <T> previous = null; while (finger != null && !value.Equals(finger.GetValue())) { previous = finger; finger = finger.GetNext(); } if (finger == null) { return(default(T)); } if (previous == null) { this.head = finger.GetNext(); } else { previous.SetNext(finger.GetNext()); } this.count--; return(finger.GetValue()); }
public override T RemoveFromTail() { Assertion.Pre(this.head != null); SinglyLinkedListElement <T> previous = null; SinglyLinkedListElement <T> finger = this.head; while (finger.GetNext() != null) { previous = finger; finger = finger.GetNext(); } if (previous == null) { this.head = null; } else { previous.SetNext(finger.GetNext()); } this.count--; return(finger.GetValue()); }
public override T RemoveFromTail() { Assertion.Pre(this.tail != null); SinglyLinkedListElement <T> finger = this.tail; SinglyLinkedListElement <T> oldTail = this.tail; while (finger.GetNext() != this.tail) { finger = finger.GetNext(); } if (finger == this.tail) { this.tail = null; } else { finger.SetNext(this.tail.GetNext()); this.tail = finger; } this.count--; return(oldTail.GetValue()); }
public void TestSetGetNext() { Assert.AreEqual(null, element.GetNext()); SinglyLinkedListElement <int> e = new SinglyLinkedListElement <int>(2, element); Assert.AreEqual(element, e.GetNext()); SinglyLinkedListElement <int> e2 = new SinglyLinkedListElement <int>(3, null); element.SetNext(e2); Assert.AreEqual(e2, element.GetNext()); }
public override T PeekTail() { Assertion.Pre(this.head != null); SinglyLinkedListElement <T> finger = this.head; while (finger.GetNext() != null) { finger = finger.GetNext(); } return(finger.GetValue()); }
public override void AddToTail(T value) { SinglyLinkedListElement <T> newTail = new SinglyLinkedListElement <T>(value); if (this.head == null) { this.head = newTail; } else { SinglyLinkedListElement <T> finger = this.head; while (finger.GetNext() != null) { finger = finger.GetNext(); } finger.SetNext(newTail); } this.count++; }
public override bool Contains(T value) { Assertion.Pre(value != null); SinglyLinkedListElement <T> finger = this.head; while (finger != null && !value.Equals(finger.GetValue())) { finger = finger.GetNext(); } return(finger != null); }
public override T RemoveFromHead() { Assertion.Pre(this.tail != null); SinglyLinkedListElement <T> head = this.tail.GetNext(); if (this.tail == head) { this.tail = null; } else { this.tail.SetNext(head.GetNext()); } this.count--; return(head.GetValue()); }
public override bool Contains(T value) { Assertion.Pre(value != null); SinglyLinkedListElement <T> finger = this.tail; if (finger == null) { return(false); } do { if (value.Equals(finger.GetValue())) { return(true); } finger = finger.GetNext(); } while (finger != this.tail); return(false); }