Cita: me dices que para quitar todo ese switch grandisimo ponga lo siguiente:
array[(int) caracter - 97] += 1
array[(int) caracter - 98] += 1
array[(int) caracter - 99] += 1
Fíjate bien, yo digo que si 'a' es 97, 'b' es 98 y así sucesivamente, si yo quiero sumar un uno en la posición 0 de n[] porque apareció una 'a', no necesito crear un switch, ya 97 - 97 es cero. En el caso de la 'b' 98 - 97 es 1, que como ves coincide con tu switch.
El problema es la ñ, ya que por no aparecer en el abecedario inglés, si n (110) entonces o(111) mientras que ñ(241)
Por eso tu switch simplemente necesita diferenciar el caso de la ñ (si no tienes encuenta tildes) y el caso general
Caso general:
n[caracter-97]++
Cita: cuando llega al final del tratamiento de la palabra sale del nodo hacia una lista donde se guarda, y eso no lo veo,;
No sé qué no ves, llegas al final del procesado de cada palabra y la guardas en ese array. Te he puesto un enlace al objeto que tienes que usar como array dinámico.
¿No sabes donde está el final de tu programa?¿No sabes como guardar una palabra en un aray dinámico?¿No sabes donde está la palabra?