Per inserire in testa crei un nodo, al suo puntatore next metti l'attuale testa e infine dichiari questo nodo come nuova testa. Attenta a non invertire l'ordine delle operazioni.
Per inserire in coda scorri tutta la lista, determinando il nodo finale. A questo nodo, che ha come "next" un valore NULL, fai puntare il tuo nuovo nodo, che avrà NULL come next.
Per il primo problema, cosa intendi per "inserito prima"?