示例#1
0
        static void Main()
        {
            var bag = new PriorityQueue<Car>();

            var opel = new Car
            {
                Model = "Opel",
                Price = 1000
            };
            var mercedes = new Car
            {
                Model = "Mercedes",
                Price = 5000
            };

            var citroen = new Car
            {
                Model = "Citroen",
                Price = 3000
            };

            bag.Enqueue(opel);
            bag.Enqueue(mercedes);
            bag.Enqueue(citroen);

            while(bag.Count > 0)
            {
                var car = bag.Dequeue();
                Console.WriteLine("{0} -> {1}",car.Model, car.Price);
            }
        }
示例#2
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();


        }
示例#3
0
        static void Main()
        {
            PriorityQueue<int, string> pq = new PriorityQueue<int, string>();
            pq.Enqueue(38, "Pesho");
            pq.Enqueue(22, "Peshev");
            pq.Enqueue(65, "Misho");
            pq.Enqueue(-3, "Mishka");
            Console.WriteLine(pq.Dequeue());
            pq.Enqueue(8, "Mishle");

            while (pq.Count > 0)
            {
                Console.WriteLine(pq.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());
            }
        }
        public bool EndEvent(int sendingNodeID, double time)
        {
            // Returns true if collision occurred

            PriorityQueue<L2NodeEntry, double> tempEvents = new PriorityQueue<L2NodeEntry, double>();
            L2NodeEntry currentEntry;
            double currentTime;
            PriorityQueueItem<L2NodeEntry, double> item;
            bool collided = false;

            while ((SPL_Events.Count > 0) && (SPL_Events.Peek().Priority < -time))
            {
                item = SPL_Events.Dequeue();
                currentTime = -item.Priority;
                currentEntry = item.Value;

                if ((currentEntry.id == sendingNodeID) & (currentEntry.Collision))
                    collided = true;

                ReceiveLevel = ReceiveLevel + currentEntry.BaseReceiveLevel;
                NoiseLevel = NoiseLevel - currentEntry.BaseReceiveLevel;
            }

            while ((SPL_Events.Count > 0) && (SPL_Events.Peek().Priority == time))
            {
                item = SPL_Events.Dequeue();
                if (item.Value.id != sendingNodeID)
                    tempEvents.Enqueue(item);
                else
                {
                    currentEntry = item.Value;

                    if (currentEntry.Collision)
                        collided = true;

                    if (currentID == sendingNodeID)
                    {
                        ReceiveLevel = 0;
                    }
                    else if (ReceiveLevel != 0)
                    {
                        ReceiveLevel = ReceiveLevel + currentEntry.BaseReceiveLevel;
                    }
                    NoiseLevel = NoiseLevel - currentEntry.BaseReceiveLevel;
                }
            }

            while (tempEvents.Count > 0)
            {
                SPL_Events.Enqueue((PriorityQueueItem<L2NodeEntry, double>)tempEvents.Dequeue());
            }

            return collided;
        }
示例#7
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());
            }
        }
示例#8
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());
            }
        }
        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());
            }
        }
示例#10
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());
            }
        }
示例#11
0
        public static void Main()
        {
            IComparer<int> comparer = null;

            Console.WriteLine("PriorityQueue sample application.");
            Console.WriteLine();
            Console.WriteLine("Please enter the initial elements of the priority queue as a list of integer");
            Console.WriteLine("numbers, separated by spaces.");
            Console.Write("> ");

            string initialElements = Console.ReadLine().Trim();

            // Initializing the priority queue from an existing list of elements is an O(n) operation,
            // and thus faster than calling Enqueue for each element, which would be O(n log n).
            PriorityQueue<int> queue = new PriorityQueue<int>(GetNumbers(initialElements), comparer);

            PrintQueueInfo(queue);

            Console.WriteLine("Please enter a list of integer numbers, separated by spaces, to add to the");
            Console.WriteLine("priority queue; enter \"remove\" to remove an element, or \"exit\" to exit.");
            while (true)
            {
                Console.Write("> ");

                string command = Console.ReadLine().Trim();

                switch (command)
                {
                    case "remove":
                        if (queue.Count > 0)
                        {
                            int n = queue.Dequeue();
                            Console.WriteLine("Removed {0} from the queue.", n);
                        }
                        break;
                    case "exit":
                        return;
                    default:
                        foreach (int n in GetNumbers(command))
                        {
                            queue.Enqueue(n);
                        }
                        break;
                }

                PrintQueueInfo(queue);
            }
        }
示例#12
0
        static void Main(string[] args)
        {
            PriorityQueue<int> priorityQueue = new PriorityQueue<int>();

            priorityQueue.Enqueue(10);
            priorityQueue.Enqueue(11);
            priorityQueue.Enqueue(21);
            priorityQueue.Enqueue(44);
            priorityQueue.Enqueue(23);
            priorityQueue.Enqueue(6);
            priorityQueue.Enqueue(60);

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

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

            priorityQueue.Enqueue(70);
            Console.WriteLine("The biggest element: {0} ", priorityQueue.Peek);
        }
示例#13
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());
            }
        }
示例#14
0
        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);
        }
示例#15
0
 static void Main(string[] args)
 {
     PriorityQueue queue = new PriorityQueue();
     queue.Enqueue("Name1", Priority.Low);
     queue.Enqueue("Name2", Priority.Low);
     queue.Enqueue("Name3", Priority.Low);
     queue.Enqueue("Name4", Priority.Low);
     queue.Enqueue("Name5", Priority.Low);
     queue.Enqueue("Name6", Priority.Low);
     queue.Enqueue("Name7", Priority.Low);
     queue.Enqueue("Name8", Priority.Low);
     queue.Enqueue("Name9", Priority.Low);
     Console.WriteLine("There are " + queue.Length + " people in line.");
     Console.WriteLine("Person in front: " + queue.PeekAtFrontName() + " with priority " + queue.PeekAtFrontPriority());
     queue.Dequeue();
     Console.WriteLine("Person in front: " + queue.PeekAtFrontName() + " with priority " + queue.PeekAtFrontPriority());
     queue.Dequeue();
     Console.WriteLine("Person in front: " + queue.PeekAtFrontName() + " with priority " + queue.PeekAtFrontPriority());
     queue.Enqueue("Name10", Priority.Medium);
     Console.WriteLine("Person in front: " + queue.PeekAtFrontName() + " with priority " + queue.PeekAtFrontPriority());
     queue.Enqueue("Name11", Priority.Medium);
     Console.WriteLine("Person in front: " + queue.PeekAtFrontName() + " with priority " + queue.PeekAtFrontPriority());
     queue.Dequeue();
     queue.Enqueue("Dad", Priority.High);
     Console.WriteLine("Person in front: " + queue.PeekAtFrontName() + " with priority " + queue.PeekAtFrontPriority());
 }
示例#16
0
        static void Main(string[] args)
        {
            PriorityQueue pQueue = new PriorityQueue();

            pQueue.Enqueue(1, "1st Item");
            pQueue.Enqueue(1, "2nd Item");
            pQueue.Enqueue(3, "3rd Item");
            pQueue.Enqueue(2, "4th Item");
            pQueue.Enqueue(4, "5th Item");

            pQueue.PrintQueue(pQueue);

            pQueue.Dequeue(1);
            pQueue.Dequeue(4);

            pQueue.PrintQueue(pQueue);

            Console.ReadLine();
        }