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;

}