Форум программистов, компьютерный форум CyberForum.ru

Очередь с приоритетами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Обратная задача о ранце (ДП) http://www.cyberforum.ru/cpp-beginners/thread864322.html
Здравствуйте, необходимо решить типичную задачу о ранце, в двух видах. 1. Выбрать предметы с общей максимальной ценностью при весе не превышающем N. 2. Набрать предметов на стоимость близкую(не больше) или равную M, при минимальном весе этих предметов. Решил первую часть сам: Данные вес/ценность взял из википедии.
C++ Присвоить Указателю адрес из массива Char Например есть такой код: #include <iostream> using namespace std; int main() { int a = 123456789; int *sa = &a; http://www.cyberforum.ru/cpp-beginners/thread864314.html
C++ Вычислить значения заданной функции для заданных значений аргумента
Здравствуйте, если у вас есть примеры решенного, либо вы знаете как удовлетворить условия, то помоги. Задание: Дана формула и ряд для вычисления значения функции. Разработать программу (схемы алгоритмов) для вычисления значений заданной функции для заданных значений аргумента с заданной точностью и вывода значений аргумента и функции в табличной форме. Вычисление значений заданной функции...
C++ Изменение цвета строки!
доброго времени суток! вот условие задачи: Написать программу “Прыгающий шарик”. После запуска программы на экране должна отображаться отцентрированная текстовая строка, а также шарик, прыгающий по буквам строки по траектории в виде полукруга. При движении шарик вызывает изменение цвета текущей буквы, а также выдачу короткого звукового сигнала. Программа должна позволять пользователем вводить...
C++ Сравнение элементов списка http://www.cyberforum.ru/cpp-beginners/thread864284.html
Помогите написать функцию, которая проверяет истинность утверждения, что каждый элемент из первого списка является элементом из второго. #include <iostream> #include <fstream> #include <locale.h> using namespace std;
C++ Описание функции ungetch() Привет всем! Такой вопрос, я наткнулся на функцию ungetch(с), прочитал описание "возвращает символ в буфер" но я не могу понять, как же она работает, и что она делает? подробнее

Показать сообщение отдельно
via-82
0 / 0 / 0
Регистрация: 14.05.2013
Сообщений: 3
14.05.2013, 19:53  [ТС]     Очередь с приоритетами
Кое-что
исправил
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
//---------------------------------------------------------------------------
#ifndef _PQueue
#define _PQueue
//---------------------------------------------------------------------------
#include <iostream.h>
#include <malloc.h>
#include <fstream.h>
#include <windows.h>
 
template <class T> class PQueue{
        private:
                class QItem{
                        public:
                                T data;
                                int pr;
                                QItem(T d,int p){
                                        data = d;
                                        pr = p;
                                }
                };
                QItem *item;
            QItem **prqueue;                                                // aeiaie?. iannea iauaeoia
            int N;
                int n;
        public:
            PQueue(int N0){                                                 // eiino?oeoi? n ia?aiao?ii (?acia? i?a?aae)
                N = N0;
                prqueue = new QItem*[N];
                        n = -1;
            }
//----------------------------------------------------------------------------------------
            int Size(){
                        return n+1;
            }
//----------------------------------------------------------------------------------------
            int Size_max(){
                return N;
            }
//----------------------------------------------------------------------------------------
            void Enqueue(T d,int p){
                        QItem *temp;
                        item = new QItem(d, p);
                        n++;
                        prqueue[n] = item;
                        int i = n;
                        while ((i > 0) && (prqueue[i]->pr < prqueue[i/2]->pr)){
                                temp = prqueue[i];
                                prqueue[i] = prqueue[i/2];
                                prqueue[i/2] = temp;
                                i = i/2;
                        }
                }
//----------------------------------------------------------------------------------------
            T Dequeue(){
                        T x;
                        QItem *temp;
                        if (n == -1){
                                return NULL;
                        }else{
                                item = prqueue[0];
                                x = item->data;
                                prqueue[0] = prqueue[n];
                                n--;
                                if(n == -1){
                                        return x;
                                }
                                int i = 0,j;
                                while (i <= n/2){
                                        if ((2*i< n) && (prqueue[2*i+1]->pr < prqueue[i]->pr)){
                                                j = 2*i + 1;
                                        }else {
                                                j = 2*i + 2;
                                                if(j>n){
                                                        return x;
                                                }
                                        }
                                        if (prqueue[i]->pr > prqueue[j]->pr){
                                                temp = prqueue[i];
                                                prqueue[i] = prqueue[j];
                                                prqueue[j] = temp;
                                                i = j;
                                        }else{
                                                i = n;
                                        }
                                }
                                return x;
                        }
            }
//----------------------------------------------------------------------------------------
            bool Empty(){
                        if(n==-1){
                                return true;
                        }
                        return false;
            }
//----------------------------------------------------------------------------------------
            ~PQueue(){
                        delete [] prqueue;
                        prqueue = NULL;
 
            }
};
#endif


Но у меня закрались смутные сомнения, что алгоритм описанный в источниках вообще рабочий.

Кто-нибудь по данным источникам реализовал очередь с приоритетами.
 
Текущее время: 07:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru