Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2013, 18:18   #1
bob1995123
 
Регистрация: 28.11.2012
Сообщений: 4
Вопрос Приоритетная очередь

Добрый день друзья. Нужна ваша помощь в решении одной проблемы.
Суть проблемы в том что я в програмировании еще новичок но задача тяжелая для моего уровня программирования. Поэтому прошу вашей помощи в решении этой задачи ...
Нужно построить приоритетную очередь в С + + (консоли ) , чтобы когда мы добавляли или удаляли элементы в очередь ( из очереди ) мы указывали приоритет элемента.
И чтобы была возможность вывода информациии об очереди, всмысле обо всех элементах в ней ...

-----------------------------------------------------------------------------------------------------------------------
P.S Вот кстати полное условие этой задачи но она как на меня слишком умна ... Большое спасибо за любую указанную помощь ...


Приоритетная очередь - это очередь , в которой важно не то , кто стал последним (порядок перемещения в ней не играет роли) , а кто главнее. Более точно , при помещении в очередь указывается приоритет объекта помещается ( будем считать приоритеты целыми числами) , а при получении из очереди выбирается элемент с наибольшим приоритетом ( или один из таких элементов) .
Реализовать приоритетную очередь так , чтобы помещение и получения элемента требовали логарифмического числа действий (от размера очереди) .
Указания к решению . Согласно алгоритма сортировки деревом (в его окончательном варианте ) , будем размещать элементы очереди в массиве x [ 1 ] .. x [ k ] , поддерживая такое свойство : x [i] старше ( имеет больший приоритет) своих сыновей x [ 2 и ] и x [ 2 и +1 ] , если таковые существуют - и , следовательно , всякий элемент старше своих потомков. (Ведомости о приоритетах также хранятся в массиве , так что мы имеем дело с массивом пар ( элемент , приоритет) . ) Удаление элемента с сохранением этого свойства описано в алгоритме сортировки. Надо еще уметь восстанавливать свойство после добавления элемента в конец . Это делается так :
****t = номер добавленного элемента
****{ инвариант : в дереве любой предок приоритетнее потомка ,
********если этот потомок - не t }
****while t - не корень и t старше своего отца do begin
****| Поменять t с его отцом
****end ;
Если очередь образуют граждане , стоящие в вершинах дерева , т.е. за каждым стоит двое , а перед каждым (кроме первого) - один , то смысл этого алгоритма ясен: встав в конец , приоритетный гражданин начинает пробираться к началу , вытесняя тех , кто стоит перед ним - пока не встретит более приоритетного .
Замечания. Приоритетное очередь естественно использовать при моделировании процессов , протекающих во времени . При этом элементы очереди - это ожидаемые события , а их приоритет определяется временем , когда они произойдут.
bob1995123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вводим 15 элементов в очередь, затем выводим на экран эту очередь и добавил в очередь еще один элемент. Потом удаляем любой элемен Xumera C++ Builder 2 07.12.2013 13:56
Очередь Artem_Kow C# (си шарп) 16 05.04.2012 22:19
очередь qwer1994 Паскаль, Turbo Pascal, PascalABC.NET 0 29.02.2012 23:12
Очередь в С++ droed.nk Помощь студентам 0 07.01.2012 15:09
Очередь shelovek Помощь студентам 0 31.10.2010 14:15