Esempio n. 1
0
        }    //end peek_max

        //PEEK MIN

        public double Peek_Min()
        {
            PriortiyNode CurrentNode      = Tail;
            int          Index            = 0;
            double       SmallestPriority = 1000;

            if (CurrentNode == null)
            {
                throw new Exception("Queue is empty please try again.");
            }

            while (Index <= Count)
            {
                if (CurrentNode.Priority < SmallestPriority)
                {
                    SmallestPriority = CurrentNode.Priority;
                }    //end if

                if (CurrentNode.Next != null)
                {
                    CurrentNode = CurrentNode.Next;
                }    //end if

                Index++;
            }    //end while

            return(SmallestPriority);
        }   //end Peek_min
Esempio n. 2
0
        //PEEK MAX

        public double Peek_Max()
        {
            PriortiyNode CurrentNode     = Tail;
            int          Index           = 0;
            double       LargestPriority = -1000;

            if (CurrentNode == null)
            {
                throw new Exception("Queue is empty please try again.");
            }

            while (Index <= Count)
            {
                if (CurrentNode.Priority > LargestPriority)
                {
                    LargestPriority = CurrentNode.Priority;
                }    //end if

                if (CurrentNode.Next != null)
                {
                    CurrentNode = CurrentNode.Next;
                }    //end if

                Index++;
            }    //end while

            return(LargestPriority);
        }    //end peek_max
Esempio n. 3
0
        }   //end Peek_min

        //ENQUEUE

        public void Enqueue(Object Data = null, double Priority = 0)
        {
            PriortiyNode New_Node = new PriortiyNode(Data, Priority);

            Empty = false;

            if (Head == null)
            {
                Head = New_Node;
                Tail = New_Node;
            }
            else
            {
                Head.Next = New_Node;
                Head      = Head.Next;
            }
            Count++;
        }    //end Enqueue
Esempio n. 4
0
        }    //end Enqueue

        //DEQUEUE

        public object Dequeue()
        {
            PriortiyNode CurrentNode = Tail;
            PriortiyNode ReturnNode  = null;



            if (CurrentNode.Next != null)
            {
                while (CurrentNode.Next != Head)
                {
                    CurrentNode = CurrentNode.Next;
                }       //end while
            }
            else
            {
                Tail = null;
                Head = null;

                return(CurrentNode.Data);
            }


            ReturnNode = CurrentNode.Next;

            CurrentNode.Next = null;

            Head = CurrentNode;

            Count--;


            if (Count == 0)
            {
                Empty = true;
            }

            return(ReturnNode.Data);

            //throw new Exception("Queue is empty please try again.");
        }   //end Dequeue
Esempio n. 5
0
        }   //end Dequeue_min

        //DEQUEUE MAX

        public object Dequeue_max()
        {
            PriortiyNode CurrentNode      = Tail;
            PriortiyNode PlaceHolder_Node = null;
            int          Index            = 0;
            int          Largest          = 0;
            double       LargestPriority  = -1000;

            while (CurrentNode.Next != null)
            {
                if (CurrentNode.Priority > LargestPriority)
                {
                    LargestPriority = CurrentNode.Priority;
                    Largest         = Index;
                }             //end if

                CurrentNode = CurrentNode.Next;
                Index++;
            }             //end while

            CurrentNode = Tail;
            Index       = 0;

            while (Index <= Largest - 1)
            {
                if (CurrentNode.Next.Priority == LargestPriority)
                {
                    PlaceHolder_Node = CurrentNode.Next;
                }
                else if (CurrentNode.Next != null)
                {
                    CurrentNode = CurrentNode.Next;
                }             //end if

                Index++;
            }             //end while



            if (Index == 0)
            {
                PlaceHolder_Node = CurrentNode;
                Tail             = CurrentNode.Next;
            }

            if (CurrentNode.Next == null)
            {
                Head = CurrentNode;
            }
            else
            {
                CurrentNode.Next = CurrentNode.Next.Next;
                Head             = CurrentNode;
            }

            Count--;

            if (Count == 0)
            {
                Empty = true;
            }

            return(PlaceHolder_Node.Data);

            //throw new Exception("Queue is empty please try again.");
        } ///end Dequeue_max
Esempio n. 6
0
        }   //end Dequeue

        //DEQUEUE MIN

        public object Dequeue_min()
        {
            PriortiyNode CurrentNode      = Tail;
            PriortiyNode PlaceHolder_Node = null;
            int          Index            = 0;
            int          Smallest         = 0;
            double       SmallestPriority = 1000;


            while (CurrentNode.Next != null)
            {
                if (CurrentNode.Priority < SmallestPriority)
                {
                    SmallestPriority = CurrentNode.Priority;
                    Smallest         = Index;
                }        //end if

                CurrentNode = CurrentNode.Next;
                Index++;
            }        //end while

            CurrentNode = Tail;
            Index       = 0;

            while (Index <= Smallest - 1)
            {
                if (CurrentNode.Next.Priority == SmallestPriority)
                {
                    PlaceHolder_Node = CurrentNode.Next;
                }
                else if (CurrentNode.Next != null)
                {
                    CurrentNode = CurrentNode.Next;
                }        //end if

                Index++;
            }        //end while

            if (Index == 0)
            {
                PlaceHolder_Node = CurrentNode;
                Tail             = CurrentNode.Next;
            }
            else if (CurrentNode.Next == null)
            {
                Head = CurrentNode;
            }
            else
            {
                CurrentNode.Next = CurrentNode.Next.Next;
                Head             = CurrentNode;
            }

            Count--;

            if (Count == 0)
            {
                Empty = true;
            }

            return(PlaceHolder_Node.Data);
        }   //end Dequeue_min