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