In this code I have that gimbal lock problem,
How can I avoid gimbal lock without using quartenions?
How do I move in the same direction of camera lens?
You can’t avoid the gimbal lock without dealing with either quaternions or matrices - which turns out to be the same. Remember that yaw, pitch, roll angles are intrisically nonsymmetric, because they give the vertical axis a special role. The camera direction should be simply represented by the corresponding modelview matrix.