
leonamtotal90
(usa Ubuntu)
Enviado em 08/12/2009 - 11:06h
Pessoal eu tenho o seguinte codigo que e uma lista encadeada mas nas funcoes de insercao o programa simplesmente apaga a linha onde ele diz "Novo elemento?" mas se digitar rapido ele aceita o nome sabe. nao sei pq isso acontece
/* os sleep aqui no codigo foi devido a falta de funcoes como getche() no gcc e getchar() as vezes nao segura o termino da funcao.
/*Programa principal*/
main()
{
struct reg *inicio;
char op;
inicio=initlista();
for(;;)
{
printf("Escolha uma opcao:\n(A)dicionar elemento no final\n(I)nserir elemento no Inicio\n");
printf("(E)xibe Lista\ne(X)cluir elemento\n(S)air\n");
op=getchar();
switch (toupper(op))
{
case 'A':{inserefinal(&inicio);break;}
case 'I':{inserenoinicio(&inicio);break;}
case 'E':{exibelista(&inicio);break;}
case 'X':{removeelemento(&inicio);break;}
case 'S':{desaloca(&inicio);exit(0);}
default: {printf("\aEntrada invalida!");system("clear");}
}
system("clear");
}
}
void inserenoinicio(struct reg **raiz)
{
struct reg *novono;
if(*raiz==NULL)
{novono=(struct reg*) malloc(sizeof(struct reg));
printf("\n\nNovo elemento:");
fflush(stdin);
gets(novono->nome);
*raiz=novono;
novono->prox=NULL;}
else
{novono=(struct reg*)malloc(sizeof(struct reg));
printf("\n\nNovo elemento:");
fflush(stdin);
gets(novono->nome);
novono->prox=*raiz;
*raiz=novono;}
sleep(2);
}
void inserefinal(struct reg **raiz)
{
struct reg *pcorre,*novono;
if(*raiz==NULL)
{novono=(struct reg*)malloc(sizeof(struct reg));
printf("\n\nNovo elemento:");
fflush(stdin);
gets(novono->nome);
*raiz=novono;
novono->prox=NULL;
}
else
{
pcorre=*raiz;
while(pcorre->prox!=NULL) pcorre=pcorre->prox;
novono=(struct reg*)malloc(sizeof(struct reg));
printf("\n\nNovo elemento:");
fflush(stdin);
gets(novono->nome);
pcorre->prox=novono;
novono->prox=NULL;
}
sleep(2);
}