viciado 1 Denunciar post Postado Setembro 22, 2009 Dúvida sobre lista em C. Como posso inserir elementos e o elemento inserido ser sempre o último ? Ex: ins(A) --- (A) ins(B) --- (A,B) ins(C) --- (A,B,C) . . . Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Setembro 22, 2009 Percorra a lista com um ponteiro auxiliar e adicione ao próximo do último elemento da lista. Basicamente tu faz um loop para definir aux para aux->proximo até aux->proximo ser == NULL, então tu adiciona o próximo elemento em aux->proximo. Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Setembro 22, 2009 Percorra a lista com um ponteiro auxiliar e adicione ao próximo do último elemento da lista. Basicamente tu faz um loop para definir aux para aux->proximo até aux->proximo ser == NULL, então tu adiciona o próximo elemento em aux->proximo. Seria assim ? void ins(FILA *F, int n){ FILA *aux; aux = (FILA*) malloc(sizeof(FILA)); while(aux->prox != NULL){ aux = aux->prox; aux->n = n; } *F = aux; } Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Setembro 22, 2009 Quase, faça assim: void ins(FILA *F, int n){ FILA *aux; aux = Raiz_Da_Fila(F); while(aux->prox != NULL) //primeiro percorremos a fila. aux = aux->prox; aux = Alocar_Nó(); //agora alocamos o nó aux->prox = NULL; //e atribuimos os valores aux->n = n; } Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Setembro 22, 2009 Quase, faça assim: void ins(FILA *F, int n){ FILA *aux; aux = Raiz_Da_Fila(F); while(aux->prox != NULL) //primeiro percorremos a fila. aux = aux->prox; aux = Alocar_Nó(); //agora alocamos o nó aux->prox = NULL; //e atribuimos os valores aux->n = n; } aux = Raiz_Da_Fila(F); Não entendi essa parte Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Setembro 22, 2009 To ficando loco (hauhauhau). Fiz essas funções para testar e o programa finaliza sozinho, da erro e fecha #include <stdio.h> #include <stdlib.h> typedef struct cel{ int n; struct cel *prox; }celula; void insere(celula **p, int x){ celula *aux; aux = (celula*) malloc(sizeof(celula)); aux->n = x; aux->prox = (*p)->prox; (*p)->prox = aux; } void imprima(celula **p){ celula *aux; for(aux = (*p)->prox; aux != NULL; aux = aux->prox) printf("%d \n",aux->n); } int main(){ celula *P; insere(&P,10); insere(&P,15); imprima(&P); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Setembro 22, 2009 Uni os seus tópicos, afinal, ambos tratam do mesmo assunto e do mesmo programa. aux = Raiz_Da_Fila(F); Não entendi essa parte A fila tem que ter uma raiz, isto é, ela tem que começar em algum lugar! De uma olhada nesse exemplo, de uma lista encadeada: http://codepad.org/tlQGsL0t foi retirado deste tópico e o código contém erros propositadamente. Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Setembro 23, 2009 Eu utilizo o Dev. Não aparece nenhuma mensagem de erro o programa simplesmente da erro e fecha Analisei melhor o código e ainda não entendi o problema Estou agora com Falha de Segmentação #include <stdio.h> #include <stdlib.h> typedef struct cel{ int n; struct cel *prox; }celula; void insere(celula **p, int n){ celula *aux; aux = *p; while(aux != NULL) //primeiro percorremos a fila. aux = aux->prox; aux = (celula*) malloc(sizeof(celula)); //agora alocamos o nó aux->prox = NULL; //e atribuimos os valores aux->n = n; } void imprima(celula **p){ celula *aux; for(aux = (*p)->prox; aux != NULL; aux = aux->prox) printf("%d \n",aux->n); } int main(){ celula *P; printf("Inserindo 10\n"); insere(&P,10); printf("Inserindo 15\n"); insere(&P,15); printf("mostrando a lista:\n"); imprima(&P); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites