#include "string.h" #include "stdio.h" struct SNo { char Palavra[20]; SNo * prox; SNo * ant; }; SNo * palavras = NULL; void Insere(SNo * * palavras, char * palavra) { SNo * novo; SNo * fim; novo = new SNo; strcpy(novo->Palavra, palavra); novo->prox = NULL; novo->ant = NULL; if(*palavras == NULL) { *palavras = novo; } else { for(fim=*palavras ; fim->prox != NULL ; fim=fim->prox) {} fim->prox = novo; novo->ant = fim; } } void MostraLista(SNo * inicio) { SNo * i; for(i=inicio ; i!=NULL ; i=i->prox ) { printf("%s ",i->Palavra); } printf("\n"); } void MostraListaR(SNo * inicio) { if(inicio==NULL) return; else { printf("%s ",inicio->Palavra); MostraListaR(inicio->prox); } } void MostraListaInvertida(SNo * inicio) { if(inicio==NULL) return; else { MostraListaInvertida(inicio->prox); printf("%s ",inicio->Palavra); } } int ContaListaR(SNo * inicio) { if( inicio == NULL) return 0; else return( 1 + ContaListaR(inicio->prox) ); } void main() { char Temp[20]; int i; strcpy(Temp,"lixo"); while(strcmp(Temp,"fim") != 0) { printf("Digite Palavra: "); scanf("%s",Temp); Insere(&palavras,Temp); MostraListaR(palavras); printf("\n"); MostraListaInvertida(palavras); printf("\n"); printf("Esta lista tem %d palavras\n",ContaListaR(palavras)); } }