Tu error es muy boludo. Todo lo demas anda perfecto, Pero mira la linea 147. Primero debes chequear que el puntero a actual no sea null y despues buscar el valor dentro de la estructura. En el caso que es null vos estabas tratando de acceder al lugar cero de la memoria. Y eso te genera el error.
Con invertir las condiciones funciona perfecto el programa. Salados
Código C:
Ver originalwhile ( ptrActual != NULL && ptrActual->letra < valor ){