I think it is possible with both rear and front node separately. For rear node, explanation is already provided by Pragy in the selected answer. For front node, enqueue and dequeue can be done as follows.
Enqueue: Create a new node. Copy the contents of front node into this newly created node. Make it point to the node next of front node. In the existing front node, copy the new key to be enqueued. Make the existing front node point to the newly created node. Move the pointer to front node from existing front node to the newly created node.
Dequeue: Copy the contents of node next to front node, into the front node. Make the front node point to the third node. Delete the 2nd (node next to front) node.
These are constant set of operations irrespective of the number of elements in the list.