Ir ao conteúdo
  • Cadastre-se
MPR00

C <suporte pra explicar o que esta acontecendo no codigo, se possivel com esquema>

Posts recomendados

void XYZ(TLISTA *pLista)

{

        struct TNO *aux1, *aux2;

 

        if ((*pLista) != NULL)

        {

        aux1 = (*pLista);

 

        if (aux1->prox == NULL)

        {

             free(aux1);              

             (*pLista) = NULL;

        }

        else

        {

            while (aux1->prox->prox != NULL)   

            {                              

                 aux1 = aux1->prox;

            }

            aux2 = aux1->prox;

            aux1->prox = NULL;

            free(aux2);     

 

        }

}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse código remove o último elemento de uma lista encadeada:

void XYZ(TLISTA *pLista)
{
        struct TNO *aux1, *aux2;
        
        if ((*pLista) != NULL) 
        {
        aux1 = (*pLista); //aux1 aponta para o comeco da lista
 
        if (aux1->prox == NULL) //verifica se existe outro elemento alem do primeiro na lista
        {
             //caso a lista so tenha um elemento, apague este elemento 
             free(aux1);              
             //agora a lista toda nao tem nenhum elemento
             (*pLista) = NULL;
        }
        else
        {  
            //caso a lista tenha outros elementos, percorre ela ate o penultimo 
            while (aux1->prox->prox != NULL)   
            {                              
                 aux1 = aux1->prox;
            }
            //apos o laco, aux1 deve connter o penultimo elemento
            aux2 = aux1->prox; //faz aux2 apontar para o ultimo elemento
            //remove o ultimo da lista
            aux1->prox = NULL;
            //apaga o ultimo elemento da memoria.
            free(aux2);     
 
        }
}}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Flávio Pedroza Vê esse meu código aqui

#include <stdio.h>
#include <stdlib.h>

/* Constantes */
#define TMAX_CARACTERE 10
#define TMAX_NUMERO 10

/* Tipos */
typedef struct contato
{
    char nome[TMAX_CARACTERE];
    char numero[TMAX_NUMERO];
}TContato;

typedef struct lista
{
    TContato info;
    struct lista *proximo;
}TLista;


int main()
{
    /* Ponteiros da lista */
    TLista *inicio=NULL,*ponteiro=NULL;
    char tecla;
    /* Pega os contatos */
    do
    {
        TContato info;
        puts("Digite o nome da pessoa.");
        scanf("%s",info.nome);
        getchar();
        puts("Digite o numero da pessoa.");
        scanf("%s",info.numero);
        getchar();
        if(!inicio)
        {
            inicio=malloc(sizeof(TLista));
            if(!inicio)
            {
                fprintf(stdout,"\nErro1.\n");
                getchar();
                return(1);
            }
            inicio->proximo=NULL;
            inicio->info=info;
            ponteiro=inicio;
        }
        else
        {
            TLista *aux=malloc(sizeof(TLista));
            if(!aux)
            {
                fprintf(stdout,"\nErro2.\n");
                getchar();
                return(1);
            }
            aux->info=info;
            aux->proximo=NULL;
            ponteiro->proximo=aux;
            ponteiro=aux;
        }
        puts("Digite 1 para sair e 2 para continuar.");
        scanf("%c",&tecla);
        getchar();
    }while(tecla=='2');
    /* Mostra a lista */
    ponteiro=inicio;
    while(ponteiro)
    {
        printf("\nNome:\t%s\nTelefone:\t%s\n",ponteiro->info.nome,ponteiro->info.numero);
        ponteiro=ponteiro->proximo;
    }
    getchar();
    /* Limpa a lista */
    ponteiro=inicio;
    while(ponteiro)
    {
        inicio=ponteiro->proximo;
        free(ponteiro);
        ponteiro=inicio;
    }
    return(0);
}

trabalhar com ponteiros já é complicado, e só com metade do código fica pior ainda.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!