コード例 #1
0
        public T Dequeue()
        {
            PriorityQueueNode <T> node = prQueue.OrderBy(item => item.Priority).First();

            prQueue.Remove(node);
            return(node.Item);
        }
コード例 #2
0
        private void BubbleUp(PriorityQueueNode <T> node)
        {
            values.Add(node);

            int currentIndex = values.Count - 1;

            if (currentIndex <= 0)
            {
                return;
            }
            while (true)
            {
                int parentIndex = (int)Math.Floor((currentIndex - 1) / 2m);
                if (parentIndex < 0)
                {
                    return;
                }
                var parent = values[parentIndex];


                if (parent.Priority.CompareTo(node.Priority) > 0)
                {
                    values[currentIndex] = parent;
                    values[parentIndex]  = node;
                    currentIndex         = parentIndex;
                }
                else
                {
                    return;
                }
            }
        }
コード例 #3
0
        private void Swap(int firstIndex, int secondIndex)
        {
            PriorityQueueNode <T> tmp = values[firstIndex];

            values[firstIndex]  = values[secondIndex];
            values[secondIndex] = tmp;
        }
コード例 #4
0
        static void Main(string[] args)
        {
            PriorityQueueNode pq = new PriorityQueueNode();

            //Node node = pq.newNode(4, 5);

            pq.enqueue(5, 2);

            pq.enqueue(6, 3);

            pq.enqueue(7, 4);

            pq.enqueue(700, 1);
            pq.enqueue(700111, 0);


            //pq.size();

            //Console.WriteLine("\n");

            /*pq.print();
             * Console.WriteLine("\n" + pq.peek() + " peek");
             * pq.dequeue();
             * pq.print();
             *
             * Console.WriteLine("\n" + pq.peek() + " peek");
             * pq.dequeue();
             * pq.print();
             *
             *
             * Console.WriteLine(pq.contain(4));*/

            //pq.size();


            //pq.print();
            pq.print();
            pq.reveserAll();
            pq.print();

            //pq.size();

            //pq.print();
            // Console.WriteLine(pq.peek());

            Console.ReadLine();
        }
コード例 #5
0
        public void Enqueue(T value, T priority)
        {
            var node = new PriorityQueueNode <T>(value, priority);

            BubbleUp(node);
        }
コード例 #6
0
 public int CompareTo(PriorityQueueNode <T> other)
 {
     return(Priority.CompareTo(other.Priority));
 }