In the stack, you pushed values to the beginning of the list, and you removed them from the beginning of the list.

For the queue, you will push items to the end of the list, and remove them from the beginning of the list.

You can either do this by traversing the list to the end every time you push an element, or maintaining a pointer to the end of the list. I suggest maintaining a pointer to the end of the list.

Incidentally, this means that the POP function won't have to change... just the PUSH function.