guarde cada uno de los nombres en una matriz, e use un contador para saber cuantos nombres tienes guardado, luego cuando usar el for para imprimir, ao declarar el indice(i) e atribuir cero como se hace normalmente, para luego ir incrementando, use el contador como valor inicial y luego en vez de ir incrementando el i, vaya haciendo un decremento hasta cero. Vamos ver mejor como queda eso.
Imaginamos que tenemos eso:
char lista[10][100];
int contador = 0;
Es evidente que tenemos una capacidad de 10 nombres de máximo 100 letras(99+\0=100) cada uno. Entonces comenzamos a guardar nombres, el primer en lista[0][0]. A cada nombre guardado hacemos el contador incrementar en 1, púes así sabremos cuantos nombres tenemos guardados. Luego hacemos lo mismo con el segundo nombre en lista[1][0], y como en el paso anterior incrementamos el contador, lo haremos para cada nombre. Pero recuerde que no puedes pasar de 10 nombres en este caso, o debes modificar la declaración de la matriz para que tenga un mayor numero de nombres.
A la hora de imprimir haces de esta forma:
for(i=contador-1; i>=0; i--)
En la práctica quiere decir que i será igual a 2, púes tienes 3 nombres en tu ejemplo, "Y" el ultimo está en la lista(lista[2][0]), entonces i hará que se imprima el ultimo nombre primeramente, luego le decrementamos en 1 a i, y así imprimiremos el segundo nombre(lista[1][0]), y repites hasta imprimir el primer nombre de la lista, pero que en realidad es el que quieres imprimir antes(lista[0][0]). El resultado será el que esperas, compruebalo, y luego nos lo dices si has conseguido.
Suerte!