private void InternalInsertNodeToEmptyList(LListNode <T> newNode) { newNode.next = newNode; newNode.prev = newNode; head = newNode; count++; version++; }
private void InternalInsertNodeBefore(LListNode <T> node, LListNode <T> newNode) { newNode.next = node; newNode.prev = node.prev; node.prev.next = newNode; node.prev = newNode; count++; version++; }
public bool MoveNext() { if (version != collection.version) { throw new InvalidOperationException(); } if (currentIndex++ != -1) { node = node.Next; } return(node != null); }
public void Enqueue(T value) { if (value == null) { throw new ArgumentNullException(); } LListNode <T> result = new LListNode <T>(this, value); if (head == null) { InternalInsertNodeToEmptyList(result); } else { InternalInsertNodeBefore(head, result); } }
private void InternalRemoveNode(LListNode <T> node) { if (node.Next == node) { head = null; } else { node.next.prev = node.prev; node.prev.next = node.next; if (head == node) { head = node.next; } } count--; version++; }
public QueueEnumerator(LinkedListQueue <T> collection) { this.collection = collection; node = collection.head; version = collection.version; }