示例#1
0
        public static void Main()
        {
            var pq = new PriorityQueue<string>();
            pq.Enqueue(1, "Last")
                .Enqueue(99, "First")
                .Enqueue(1, "Last")
                .Enqueue(16, "Middle")
                .Enqueue(0, "After last");

            while (pq.Count > 0)
            {
                Console.WriteLine(pq.Dequeue());
            }
        }
        public static void Main()
        {
            var queue = new PriorityQueue<string>();
            for (int i = 0; i < 26; i++)
            {
                string name = "Name " + (char)(i + 'a');
                queue.Enqueue(name);
            }

            while (queue.Count > 0)
            {
                Console.WriteLine(queue.Dequeue());
            }
        }
示例#3
0
        public static void Main(string[] args)
        {
            var queue = new PriorityQueue<int>();

            queue.Enqueue(80000);
            queue.Enqueue(3);
            queue.Enqueue(500);
            queue.Enqueue(900);
            queue.Enqueue(2);

            queue.Dequeue();


        }
示例#4
0
        static void Main()
        {
            var a = new PriorityQueue<int>();

            a.Enqueue(5, 1);
            a.Enqueue(1, 0);
            a.Enqueue(3, 5);
            a.Enqueue(10, 1);
            a.Enqueue(41, 2);

            Console.WriteLine(a.Dequeue());
            Console.WriteLine(a.Dequeue());
            Console.WriteLine(a.Dequeue());
            Console.WriteLine(a.Dequeue());
            Console.WriteLine(a.Dequeue());
        }
        public static void Main()
        {
            var queue = new PriorityQueue<int>(true);

            queue.Enqueue(4);
            queue.Enqueue(5);
            queue.Enqueue(3);
            queue.Enqueue(1);
            queue.Enqueue(1);

            while (queue.Count > 0)
            {
                Console.WriteLine(queue.Peek());
                Console.WriteLine(queue.Dequeue());
            }
        }
        static void Main(string[] args)
        {
            PriorityQueue PQ = new PriorityQueue();
            PQ.push(3, "Clear drains");
            PQ.push(4, "Feed cat");
            PQ.push(5, "Make tea");
            PQ.push(1, "Solve RC tasks");
            PQ.push(2, "Tax return");

            while (!PQ.Empty)
            {
                var Val = PQ.pop();
                Console.WriteLine(Val[0] + " : " + Val[1]);
            }
            Console.ReadKey();
        }
        public static void Main()
        {
            PriorityQueue<Person> people = new PriorityQueue<Person>();
            people.Enquene(new Person("Samuel", 25));
            people.Enquene(new Person("Sancho", 27));
            people.Enquene(new Person("Grigor", 30));
            people.Enquene(new Person("Asya", 24));
            people.Enquene(new Person("Gergana", 35));
            people.Enquene(new Person("Maria", 22));
            people.Enquene(new Person("Pesho", int.MinValue));

            Console.WriteLine("The root: {0}", people.Root);

            while (people.Count > 0)
            {
                Console.WriteLine(people.Dequene());
            }
        }
        static void Main()
        {
            PriorityQueue<int> priorityQueue = new PriorityQueue<int>();

            priorityQueue.Enqueue(10);
            priorityQueue.Enqueue(12);
            priorityQueue.Enqueue(13);
            priorityQueue.Enqueue(14);
            priorityQueue.Enqueue(15);

            Console.WriteLine("Peek at biggest element: {0} ", priorityQueue.Peek);
            priorityQueue.Dequeue();

            Console.WriteLine("Peek after dequeue: {0}", priorityQueue.Peek);

            priorityQueue.Enqueue(15);
            priorityQueue.Enqueue(20);
            Console.WriteLine("Biggest element after enqueue: {0} ", priorityQueue.Peek);
        }
示例#9
0
    // 20 marks
    // Build a Huffman tree based on the character frequencies greater than 0 (invoked by Huffman)
    private void Build(int[] F)
    {
        PriorityQueue.PriorityQueue <Node> PQ = new PriorityQueue.PriorityQueue <Node>(F.Length);
        for (int x = 0; x < F.Length; x++)                                     // loop to create the leaf nodes
        {
            if (F[x] > 0)                                                      // checks to make sure there is at least one occurrence
            {
                Node temp = new Node(possibleCharacters[x], F[x], null, null); // leaf nodes have no left and right nodes
                PQ.Add(temp);                                                  //add leaf nodes to priority queue
            }
        }
        while (PQ.Size() > 2)
        {
            Node temp = new Node();                       //new empty node
            int  freq = PQ.Front().Frequency;             //store left side frequency
            temp.Left = PQ.Front();                       // store left side node
            PQ.Remove();                                  //remove left side node from priority queue

            temp.Frequency = freq + PQ.Front().Frequency; //store left side freq plus right side freq
            temp.Right     = PQ.Front();                  //store right side node
            PQ.Remove();                                  //remove right side node from priority queue

            PQ.Add(temp);                                 //add new sub tree to priority queue
        }
        if (PQ.Size() == 2)
        {
            HT = new Node();                            //initialize head node as empty
            int freq = PQ.Front().Frequency;            //store left node frequency
            HT.Left = PQ.Front();                       // store left node
            PQ.Remove();                                // remove node from priority queue

            HT.Frequency = freq + PQ.Front().Frequency; //store both frequencies in head node
            HT.Right     = PQ.Front();                  //store right node
            PQ.MakeEmpty();                             //remove node from priority queue (make sure its empty)
        }
        else //Special case, only one node in the priority queue
        {
            HT           = new Node();           // head node is set to only have one leaf node and freq is that of the leaf node
            HT.Frequency = PQ.Front().Frequency; // set head node freq as leaf node freq
            HT.Left      = PQ.Front();           // if there is only one node, it becomes the head node
            PQ.MakeEmpty();                      //empty priority queue
        }
    }
示例#10
0
        public static void Main()
        {
            //Implement a class PriorityQueue<T> based on the data structure "binary heap".

            PriorityQueue<Person> people = new PriorityQueue<Person>();
            people.Enquene(new Person("Doncho", 28));
            people.Enquene(new Person("Niki", 27));
            people.Enquene(new Person("Ivo", 29));
            people.Enquene(new Person("Asya", 24));
            people.Enquene(new Person("Ivo1", 35));
            people.Enquene(new Person("Asya1", 22));
            people.Enquene(new Person("Pesho", int.MinValue));

            Console.WriteLine("The root: {0}", people.Root);

            while (people.Count > 0)
            {
                Console.WriteLine(people.Dequene());
            }
        }
示例#11
0
        public static void Main(string[] args)
        {
            PriorityQueue<int> testQueue = new PriorityQueue<int>(5, true);
            testQueue.Enqueue(1);
            testQueue.Enqueue(2);
            testQueue.Enqueue(3);
            testQueue.Enqueue(5);
            testQueue.Enqueue(1);
            //testQueue.Dequeue();
            testQueue.Enqueue(25);
            //Console.WriteLine("Dequeue: {0}", testQueue.Dequeue());
            testQueue.Print();
            testQueue.Enqueue(2);
            testQueue.Enqueue(7);
            testQueue.Print();

            while (testQueue.Count > 0)
            {
                Console.WriteLine("Dequeue: {0}", testQueue.Dequeue());
            }
        }
示例#12
0
        private static void MaxQueueTest()
        {
            Console.WriteLine("Max priority: ");
            var queue = new PriorityQueue<int>(false);

            Console.WriteLine("Count: " + queue.Count);

            queue.Enqueue(0);
            queue.Enqueue(2);
            queue.Enqueue(4);
            queue.Enqueue(6);
            queue.Enqueue(8);

            Console.WriteLine("Count: " + queue.Count);

            Console.WriteLine("Dequeue:");

            while (queue.Count > 0)
            {
                Console.WriteLine(queue.Dequeue());
            }
        }
示例#13
0
        private static void MinQueueTest()
        {
            Console.WriteLine("Min priority: ");
            var queue = new PriorityQueue<int>(true);

            Console.WriteLine("Count: " + queue.Count);

            queue.Enqueue(9);
            queue.Enqueue(7);
            queue.Enqueue(5);
            queue.Enqueue(3);
            queue.Enqueue(1);

            Console.WriteLine("Count: " + queue.Count);

            Console.WriteLine("Dequeue:");

            while (queue.Count > 0)
            {
                Console.WriteLine(queue.Dequeue());
            }
        }
示例#14
0
        public static void Main()
        {
            PriorityQueue myTestPriorityQueue = new PriorityQueue();
            myTestPriorityQueue.AddElement(6);
            myTestPriorityQueue.AddElement(1);
            myTestPriorityQueue.AddElement(3);
            myTestPriorityQueue.AddElement(5);
            myTestPriorityQueue.AddElement(4);
            myTestPriorityQueue.AddElement(2);
            myTestPriorityQueue.AddElement(8);
            myTestPriorityQueue.AddElement(9);
            myTestPriorityQueue.AddElement(7);

            int getNine = myTestPriorityQueue.GetElement();
            int getEight = myTestPriorityQueue.GetElement();
            int getSeven = myTestPriorityQueue.GetElement();
            int getSix = myTestPriorityQueue.GetElement();
            int getFive = myTestPriorityQueue.GetElement();
            int getFour = myTestPriorityQueue.GetElement();
            int getThree = myTestPriorityQueue.GetElement();
            int getTwo = myTestPriorityQueue.GetElement();
            int getOne = myTestPriorityQueue.GetElement();

            Console.WriteLine(getNine);
            Console.WriteLine(getEight);
            Console.WriteLine(getSeven);
            Console.WriteLine(getSix);
            Console.WriteLine(getFive);
            Console.WriteLine(getFour);
            Console.WriteLine(getThree);
            Console.WriteLine(getTwo);
            Console.WriteLine(getOne);

            // Uncomment line below to test get element from empty queue.
            // Will throw exception.
            // int getMissingElement = myTestPriorityQueue.GetElement();
        }