Here is my priority queue.. I can't seem to get my enqueue and dequeue to work quite right. The enqueue will work to a certain extent but still isn't that great. Any suggestions?
Code:#include<iostream> using namespace std; const int MAX = 10; const int DUMMY_PRIORITY = 1000; class qNode { public: int num; // queue element int priority; // queue priority qNode(); ~qNode(); }; qNode::qNode() { num = 0; priority = DUMMY_PRIORITY; } qNode::~qNode() { } class queue { private: qNode q[MAX]; // queue node int size; // queue size public: queue(); ~queue(); bool isEmpty(); bool isFull(); void enqueue(int,int); int dequeue(); void show(); }; queue::queue() { size = 0; } queue::~queue() { } bool queue::isEmpty() { bool empty = false; if(size == 0) { empty = true; } return empty; } bool queue::isFull() { bool full = false; if(size == MAX) { full = true; } return full; } void queue::enqueue(int number, int priority) { bool placedElement = false; // determine whether or not the element was placed qNode tempNode1; qNode tempNode2; int temp = 0; /* if the queue is empty, just add the number to the front of the queue */ if (isEmpty()) { q[temp].num = number; q[temp].priority = priority; size++; placedElement = true; } else { while (!placedElement) { if(q[temp].priority > priority) { if(q[temp].priority != DUMMY_PRIORITY) { tempNode1 = q[temp]; q[temp].num = number; q[temp].priority = priority; size++; for(int i = temp + 1 ; i <= size ; i++) { // move the elements up tempNode2 = q[i]; q[i] = tempNode1; tempNode1 = tempNode2; } } else { q[temp].num = number; q[temp].priority = priority; size++; } placedElement = true; } else { temp++; } } } } int queue::dequeue() { int element = q[0].num; qNode tempNode1; qNode tempNode2; if(!isEmpty()) { size--; tempNode1 = q[size-1]; for(int i=size-1; i > 0; i--) { tempNode2 = q[i-1]; q[i-1] = tempNode1; tempNode1 = tempNode2; } } return element; } void queue::show() { for(int i=0; i<MAX; i++) { cout << "Element -> " << q[i].num << "\t" << "Priority -> " << q[i].priority << endl; } } int main() { int num; int priority; queue myQueue; for(int i=0; i<MAX; i++) { cout << "enter a number -> "; cin >> num; cout << "enter a priority -> "; cin >> priority; myQueue.enqueue(num,priority); cout << endl << endl; myQueue.show(); cout << endl << endl; } // dequeue 3 elements cout << "dequeuing " << myQueue.dequeue() << endl << endl; cout << "dequeuing " << myQueue.dequeue() << endl << endl; cout << "dequeuing " << myQueue.dequeue() << endl << endl; // myQueue.show(); return 0; }



LinkBack URL
About LinkBacks



.)