Ir ao conteúdo
  • Cadastre-se

Cayo Eduardo Silveira

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

posts postados por Cayo Eduardo Silveira

  1. Fala pessoal, tranquilo? Eu to estudando sobre a criação de listas simplesmente encadeadas com um nó cabeça, então decidi fazer um programa simples pra testar os conceitos. O problema é que depois de registrar a informação nos 'n' nós, quando eu coloco para exibir a lista só o ultimo nó aparece. Alguém poderia me ajudar? Agradeço desde já! (Qualquer crítica construtiva em relação ao código como identação, clareza, etc.. é muito bem vinda!)

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct dados
    {
        int idade;
        struct dados *prox;
    }Dados;
    
    void exibe_lista(Dados *lista);
    void inicia_lista(Dados *lista);
    void insere_final(Dados *lista, int value);
    
    int main()
    {
        int val_idade;
        int op; 
        Dados *head = (Dados *)malloc(sizeof(Dados));
        
        if(!head)
            exit(1);
        
        inicia_lista(head);
        
        do
        {
            printf("Entre a opcao 1 para inserir.\n");
            printf("Entre a opcao 2 para exibir.\n");
            scanf("%d", &op);
            printf("\n");
            
            switch(op)
            {                
                case 1:
                    printf("Entre o valor da idade: ");
                    scanf("%d", &val_idade);
                    printf("\n");
                    
                    insere_final(head, val_idade);
                    printf("No registrado\n");
                break;
                
                case 2:
                    exibe_lista(head);
            }
        }while(op == 1 || op == 2);
        
    
    }
    
    void exibe_lista(Dados *lista)
    {
        Dados *temp;
        
        temp = lista->prox;
        
        while( temp != NULL){
            printf("%5d", temp->idade);
            temp = temp->prox;
        }
        printf("\n");
            
    }
    
    void insere_final(Dados *lista, int valor)
    {
        Dados *novo = (Dados *)malloc(sizeof(Dados));
                
        if(!novo)
            exit(1);
                
        if(lista->prox = NULL)
        {
            lista->prox = novo;
            novo->idade = valor;
            novo->prox = NULL;
        }
        else
        {
            Dados *tmp = (Dados *)malloc(sizeof(Dados));
            
            if(!tmp)
                exit(1);
            
            tmp->prox = lista;
            
            while(tmp->prox != NULL)
                tmp = tmp->prox;
            
            tmp->prox = novo;
            novo->idade = valor;
            novo->prox = NULL;
            
        }
    }
    
    void inicia_lista(Dados *lista)
    {
        lista->prox = NULL;
    }

     

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!