Листинг 14.6. Реализация очередей с приоритетом на C++
tempiate<class Т>
class priqueue { 4
private
int n. maxsize.
T *x.
void swap(int l. int j)
{ T t = x[l], x[i] - x[j]. x[j] = t. } public
priqueue(int m)
{ maxsi ze = m,
x = new T[maxsize+l]. n = 0.}
void insert(T t)
{ i n t i . p .
x[++n] = t.
for (l = n. l > 1 && x[p=i/2] > x[l]: i=p) swap(p . i ) .}
T extractmin()
{ int i, c,
T t = x[1] . x[1] = x[n- - j .
for (i = 1. (с - 2*1) <= n. i = с) { if (c+1 <= n && x[c+l] < x[c])
C + + .
if (X[1] < = x[c]) break. swap(с. i).}
return t,}} Наш простейший интерфейс не содержит средств проверки ошибок и деструктора, но в нем отлично выражены алгоритмические основы данной реализации очередей с приоритетом. В отличие от нашего развернутого псевдокода, этот код написан максимально сжато.
Опубликовал vovan666
April 17 2013 00:04:20 ·
0 Комментариев ·
3869 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.