Запрограммировать функции для работы с приоритетной очередью. Очередь запросов формируется согласно приоритету, снятие выполняется подряд, начиная с младших адресов ( то есть с начала очереди). Очередь должна представлять из себя массив, в котором должен выполняться сдвиг после каждого чтения и сдвиг — после достижения границы памяти, которая выделена для очереди. Приоритет: минимальное значение числового параметра, при совпадении параметров — LIFO
К сожалению, решения данной задачи пока нет. Если Вы решили эту задачу, сообщите нам, и мы выложим её на сайте.
E-mail : admin@cppstudio.com
Комментарии
Arthur
#include<iostream> #include<cstdlib> #include <ctime> using namespace std; //--------------------------------------------------------- template<class Item> class PQ { private: Item* pq; int N, head, tail, numb; const int MAX = 100; void exch(Item &A, Item &B) { Item t = A; A = B; B = t; } //---------------------------------------------------------- void compexch(Item &A, Item &B) { if(B < A) exch(A, B); } public: //-------------------------------------------------------- PQ() { pq = new Item[MAX]; N = MAX ; head = 0; tail = 0; numb = 0; } //--------------------------------------------------------- PQ(int maxN) { pq = new Item[maxN]; N = maxN ; head = 0; tail = 0; numb = 0; } //-------------------------------------------------------- int empty() const { return numb == 0; } //--------------------------------------------------------- void insert(Item item) { pq[tail++] = item; if(numb<N) numb++; if(tail == N ) tail = 0; } //------------------------------------------------------------ Item getmax() { int max = numb-1; for(int j = numb-2; j>=head; j--) if(pq[max] < pq[j]) max = j; exch(pq[max], pq[numb-1]); tail = numb-1; return pq[--numb]; } //------------------------------------------------------------- Item getmin() { int min = numb-1; for(int j = numb-2; j>=head; j--) if(pq[j] < pq[min]) min = j; exch(pq[min], pq[numb-1]); tail = numb-1; return pq[--numb]; } //-------------------------------------------------------------- void print() const { for(int y = head; y<numb; y++) cout<<pq[y]<<" "; } }; //---------------------------------------------------- int main() { setlocale(LC_ALL, "rus"); PQ<int> p(10); cout<<"Выполнение сдвига: \n\n"; for(int i = 0; i<10; i++) p.insert(i+1); p.print(); p.insert(15); p.insert(25); p.insert(20); cout<<endl; p.print(); cout<<"\n\nПриоритет: минимальное значение числового параметра: \n\n"; while(!p.empty()) cout<<p.getmin()<<" "; cout<<"\n\nПри совпадении параметров LIFO: \n"; for(int i = 0; i<5; i++) p.insert(i+1); for(int i = 0; i<5; i++) p.insert(i+1); cout<<endl; p.print(); cout<<"\n\nmin = "<<p.getmin()<<endl; cout<<endl; p.print(); return 0; }