gjr_rj
(usa Debian)
Enviado em 17/06/2008 - 18:36h
O algorítmo do colega acima é muito bom aprender, é muito usado em comp. graf. para inversão de imagem.
Não sei se esse é o caso, mas o seu problema parece ser um clássico problema de pilha, para entender o conceito (first in, last out).
seira algo +- assim.
typedef struct stno {
char valor;
struct tno *ant;
}tno;
tno *topo;
tno *base;
char *inverter (char *str)
{
topo = base;
int len = strlen(str);
char *rev = (char*)malloc(len * sizeof(char));
int i;
for (i = 0; i <= len-1; i++) push (str[i]);
for (i = 0; i <= len-1; i++) pop (rev[i]);
return rev;
}
void push (char c)
{
tno *temp = (tno*)malloc(sizeof(tno));
temp->valor=c;
temp->ant=topo;
topo=temp;
}
void pop (char c)
{
tno *temp;
if (topo)
{
temp=topo;
c=topo->valor;
topo=topo->ant;
free (temp);
}
}
int main(void)
{
printf("%s\n", inverter("Viva o linux"));
return 0;
}
Obs.: Fiz rápido e não testei o código. Pode ter algum erro.