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;
}