#Hnry# 0 Denunciar post Postado Novembro 11, 2007 Pessoal estou com dois problemas nesse codigo :unsure: Primeiro ele compila tudo correto. mas na hora de executar da um erro e encerra o programa.... se comentar o exclui_repetidos Segundo no exclui_repetidos que parametro que coloco aqui para verificar se tem algum elemento repetido na fila? Por favor me ajude http://forum.imasters.com.br/public/style_emoticons/default/upset.gif #include <stdio.h> #include <conio.h> #include <malloc.h> struct nodo { int dados; int valor; struct nodo *prox; }; void enfilera(struct nodo **inicio, struct nodo **fim, int v) { struct nodo *aux, *p; aux = (struct nodo*) malloc (sizeof(struct nodo)); if (aux!=NULL) { aux->valor=v; aux->prox=NULL; if (*inicio=NULL) { *inicio=aux; *fim=aux; } else { p=*inicio; while (p->prox !=NULL) p=p->prox; p->prox=aux; } } } void desenfilera (struct nodo **inicio, struct nodo **fim, int *valor) { struct nodo *aux; if (*inicio == NULL) printf("FILA VAZIA"); else if ((*inicio)->prox== NULL) { *valor = (*inicio)->valor; free(*inicio); *inicio=NULL; *fim=NULL; } else { *valor=(*inicio)->valor; aux=*inicio; *inicio=(*inicio)->prox; free(aux); } } void exclui_repetidos(struct nodo **inicio, struct nodo **fim) { struct nodo *aux, *prim; int v; aux=*inicio; prim=NULL; while ((aux!=NULL) && (aux!=prim)) { desenfilera (inicio, fim, &v); if (?)// que parametro que coloco aqui para verificar se tem algum elemento repetido? { enfilera(inicio, fim, v); if (prim== NULL) prim=*fim; } aux=*inicio; } } /* Programa principal */ int main() { int val, test; struct nodo *ini=NULL, *fi=NULL; printf("\nPara encerrar a insercao digite 0 !"); do { printf("\nInforme um valor. : "); scanf("%i",&val); if (val != 0) { enfilera(&ini, &fi, val); if (test == 0) printf("\nErro de alocacao de memoria..."); } } while (val != 0); getch(); printf("Exclui...\n"); getch(); exclui_repetidos(&ini, &fi); getch(); } Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 11, 2007 Tenho que testar esse programa. Veja isso: if (*inicio=NULL) não seria if (*inicio == NULL) Compartilhar este post Link para o post Compartilhar em outros sites
#Hnry# 0 Denunciar post Postado Novembro 11, 2007 Tenho que testar esse programa. Veja isso: if (*inicio=NULL) não seria if (*inicio == NULL) Ok... Valeu mesmo... Mas temos a questão de que paramentros que se coloca para ele testar a se tem elementos repetidos... Obrigado OBS:Olha eu te mandei um email se puder dar uma olhada Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 11, 2007 Voce quer testar se o elemento que deseja inserir já existe na fila? Ok... Valeu mesmo... Mas temos a questão de que paramentros que se coloca para ele testar a se tem elementos repetidos... Obrigado OBS:Olha eu te mandei um email se puder dar uma olhada Compartilhar este post Link para o post Compartilhar em outros sites
#Hnry# 0 Denunciar post Postado Novembro 11, 2007 Não, eu quero que ele compare todos os elementos que estao na fila, e se ele encontrar um elemento que ja tenha, ele deve remover. Por Exemplo na fila: 1 2 3 4 1 2 Ele remove o 1 e 2 deixando apenas o 1 e 2 que apareceram primeiro, a fila ficaria assim: 1 2 3 4 http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Valeu Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 11, 2007 Hoje eu não consigo te ajudar muito não, é pra amanhã cedo? Aqui em casa não tenho compilador. Compartilhar este post Link para o post Compartilhar em outros sites
#Hnry# 0 Denunciar post Postado Novembro 11, 2007 Isso seria para amanha... Você falou que não tem compilador... mas então não daria para colocar em portugues estruturado? Seria so esse procedimento que falta... ...Pois se você leu meu e-mail sabe a importância desse programa... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 11, 2007 Veja isso: http://forum.imasters.com.br/index.php?showtopic=257326 Compartilhar este post Link para o post Compartilhar em outros sites
#Hnry# 0 Denunciar post Postado Novembro 11, 2007 Veja isso: http://forum.imasters.com.br/index.php?showtopic=257326 :unsure: Não seria bem isso já que estamos falando de uma fila e trata-se de um algoritmo bem diferente... já que num vetor é mais facil percorrer os elementos e tem-se um numero definido de elementos... http://forum.imasters.com.br/public/style_emoticons/default/upset.gif E na fila o maior problema é percorrer e comparar... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 11, 2007 A comparação é igual. Voce precisa de duas copias da lista. Uma que é incrementada num laço e outra que é incrementada no outro laço. aux = *inicio while(aux->prox != NULL){ aux2 = aux -> prox; while(aux2 != NULL){ if(aux->valor == aux2-> valor) //isso quer dizer que tem alguem repetido. ; aux2 = aux2->prox } aux = aux->prox; } Achar se tem elementos iguais não é tão difícil o mais difícil é retirar ele da fila e refazer a ligação. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
#Hnry# 0 Denunciar post Postado Novembro 11, 2007 A comparação é igual. Voce precisa de duas copias da lista. Uma que é incrementada num laço e outra que é incrementada no outro laço. aux = *inicio while(aux->prox != NULL){ aux2 = aux -> prox; while(aux2 != NULL){ if(aux->valor == aux2-> valor) //isso quer dizer que tem alguem repetido. ; aux2 = aux2->prox } aux = aux->prox; } Achar se tem elementos iguais não é tão difícil o mais difícil é retirar ele da fila e refazer a ligação. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif :rolleyes: Vou tentar fazer um mostra_fila para ver se esta funcionado corretamente... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
#Hnry# 0 Denunciar post Postado Novembro 11, 2007 Valeu carinha... http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Consegui..... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Huuuu http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Consegui..... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Novembro 12, 2007 Foi nada. Fico feliz por ter conseguido. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites