Here is one way to write it.

typedef int QDequeMemberType;

struct QDequeCell
{
  QDequeMemberType item;
  QDequeCell* next;

  QDequeCell(QDequeMemberType i, QDequeCell* n)
  {
    item = i;
    next = n;
  }
};


struct QDeque
{
  QDequeCell* front;
  QDequeCell* back;

  QDeque()
  {
    front = NULL;
    back = NULL;
  }
};


bool isEmpty(QDeque& d)
{
  return (d.front == NULL);
}


void insertAtFront(QDeque& d, QDequeMemberType x)
{
  if(d.front == NULL) 
  {
    d.front = d.back = new QDequeCell(x, NULL);
  }
  else 
  {
    d.front = new QDequeCell(x, d.front);
  }
}


void insertAtBack(QDeque& d, QDequeMemberType x)
{
  if(d.front == NULL)
  {
    d.front = d.back = new QDequeCell(x, NULL);
  }
  else
  {
    QDequeCell* p = new QDequeCell(x, NULL);
    d.back-> next = p;
    d.back = p;
  }
}


void removeFromFront(QDeque& d, QDequeMemberType& x)
{
  if(d.front != NULL) 
  {
    x = d.front->item;
    QDequeCell* p = d.front;
    d.front = d.front->next;
    delete p;
    if(d.front == NULL) d.back = NULL;
  }
}