Ordenação de Lista Dinâmica

Boa noite!

Criei uma lista dinâmica, uma função para inserir dados nesta lista e outra para imprimir os dados:

typedef struct lista TLista;
struct lista{
char dado;
TLista *prox;
};

TLista* insere(TLista* lista, char ch){

TLista *aux = (TLista*) malloc (sizeof(TLista));
aux->dado = ch;
aux->prox = lista;
return aux;

}

void imprime(TLista* lista){

TLista *aux = (TLista*) malloc (sizeof(TLista));

aux = lista;

if(aux == NULL){
	printf("Lista Vazia");
} else{
	while(aux != NULL){
		printf("%c", aux->dado);
		aux = aux->prox++;
	}
}

}

Se eu inserir por exemplo a palavra: DESENVOLVER, na hora de imprimir ele vai retornar ao contrário, ou seja: REVLOVNESED. Como faço para ordenar isso e imprimir corretamente?
Obrigado!