Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <time.h>
- using namespace std;
- template <typename Tvalue, typename Pvalue>
- class QueuePriority
- {
- // Tvalue - არის ვეითერებისთვის
- // Pvalue - არის პრიორიტეტებისთვის.
- private:
- int* waiters;
- int* priorities;
- int maxQueueLength;
- int queueLength;
- public:
- QueuePriority() = default;
- QueuePriority(int size)
- {
- maxQueueLength = size;
- waiters = new int[maxQueueLength];
- priorities = new int[maxQueueLength];
- queueLength = 0;
- }
- void Enqueue(int data, int priorit)
- {
- if (waiters == nullptr || priorities == nullptr)
- return;
- if (IsFull())
- return;
- waiters[queueLength] = data;
- priorities[queueLength] = priorit;
- queueLength++;
- }
- int Dequeue()
- {
- if (waiters == nullptr || priorities == nullptr)
- return -1;
- if (IsEmpty())
- return -1;
- int max_pri = priorities[0];
- int pos_max_pri = 0;
- for (int i = 0; i < queueLength; i++)
- {
- if (priorities[i] > max_pri)
- {
- max_pri = priorities[i];
- pos_max_pri = i;
- }
- }
- int waiterToDequeue = waiters[pos_max_pri];
- int priorityToDequeue = priorities[pos_max_pri];
- for (int i = pos_max_pri; i < queueLength; i++)
- {
- waiters[i] = waiters[i + 1];
- priorities[i] = priorities[i + 1];
- }
- waiters[queueLength] = NULL;
- priorities[queueLength] = NULL;
- queueLength--;
- return waiterToDequeue;
- }
- void Clear()
- {
- if (waiters != nullptr)
- delete[] waiters;
- if (priorities != nullptr)
- delete[] priorities;
- waiters = new int[maxQueueLength];
- priorities = new int[maxQueueLength];
- queueLength = 0;
- }
- bool IsEmpty()
- {
- return queueLength == 0;
- }
- bool IsFull()
- {
- return queueLength == maxQueueLength;
- }
- int Count()
- {
- return queueLength;
- }
- void ShowQueue()
- {
- cout << " ------------------- " << endl;
- cout << "---------Values---------------- " << endl;
- for (int i = 0; i < queueLength; i++)
- {
- cout << waiters[i] << " ";
- }
- cout << endl;
- cout << "---------Priorities---------------- " << endl;
- for (int i = 0; i < queueLength; i++)
- {
- cout << priorities[i] << " ";
- }
- cout << " ------------------- " << endl;
- }
- ~QueuePriority()
- {
- if(waiters != nullptr)
- delete[] waiters;
- if(priorities != nullptr)
- delete[] priorities;
- }
- };
- int main()
- {
- cin.get();
- cin.get();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement