Пример #1
0
        public AnyType Dequeue()
        {
            if (FirstNode == null && LastNode == null && Count == 0)
            {
                throw new CollectionsDataNotFoundException("Queue.cs", "Queue<AnyType>", "Dequeue", "", "Queue is empty! No data exists in Queue!");
            }

            if (FirstNode != null && LastNode != null && FirstNode == LastNode && Count == 1)
            {
                AnyType Result = FirstNode.Data;

                FirstNode = null;
                LastNode  = null;

                Count--;

                return(Result);
            }

            if (FirstNode != null && LastNode != null && FirstNode != LastNode && Count > 1)
            {
                QueueNode <AnyType> BackupNode = FirstNode;
                AnyType             Result     = FirstNode.Data;

                FirstNode      = FirstNode.Next;
                FirstNode.Prev = null;

                BackupNode = null;

                Count--;

                return(Result);
            }

            throw new CollectionsUnknownErrorException("Queue.cs", "Queue<AnyType>", "Dequeue", "", "A Queue has either the size of 0, 1 or more than 1. This unknown exception should not execute!");
        }
Пример #2
0
 void IEnumerator.Reset()
 {
     EnumNode = null;
 }
Пример #3
0
 public bool NotContains(QueueNode <AnyType> Node)
 {
     return(FindFirst(Node) == null);
 }
Пример #4
0
        public bool Remove(QueueNode <AnyType> Node)
        {
            if (Node == null)
            {
                throw new CollectionsDataNullException("Queue.cs", "Queue<AnyType>", "Delete", "Node", "Node cannot be NULL!");
            }

            if (NotContains(Node))
            {
                throw new CollectionsDataNotFoundException("Queue.cs", "Queue<AnyType>", "Delete", "Node", "Node cannot be found in this Queue!");
            }

            if (Node.Prev == null && Node.Next == null && Count == 1)
            {
                FirstNode = null;
                LastNode  = null;

                Node = null;

                Count--;

                return(true);
            }

            if (Node.Prev == null && Node.Next != null && Count > 1)
            {
                FirstNode      = Node.Next;
                FirstNode.Prev = null;

                Node = null;

                Count--;

                return(true);
            }

            if (Node.Prev != null && Node.Next == null && Count > 1)
            {
                LastNode      = Node.Prev;
                LastNode.Next = null;

                Node = null;

                Count--;

                return(true);
            }

            if (Node.Prev != null && Node.Next != null && Count > 2)
            {
                Node.Prev.Next = Node.Next;
                Node.Next.Prev = Node.Prev;

                Node = null;

                Count--;

                return(true);
            }

            return(false);
        }
Пример #5
0
 public QueueNode <AnyType> Find(QueueNode <AnyType> Node)
 {
     return(FindFirst(Node));
 }