Beispiel #1
0
 private void InternalInsertNodeToEmptyList(LListNode <T> newNode)
 {
     newNode.next = newNode;
     newNode.prev = newNode;
     head         = newNode;
     count++;
     version++;
 }
Beispiel #2
0
 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++;
 }
Beispiel #3
0
 public bool MoveNext()
 {
     if (version != collection.version)
     {
         throw new InvalidOperationException();
     }
     if (currentIndex++ != -1)
     {
         node = node.Next;
     }
     return(node != null);
 }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
 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++;
 }
Beispiel #6
0
 public QueueEnumerator(LinkedListQueue <T> collection)
 {
     this.collection = collection;
     node            = collection.head;
     version         = collection.version;
 }