Jump to content

Listas Ligadas simples


PlayMa256

Recommended Posts

Bom, estou realizando alguns exercicios de listas ligadas, e tenho que fazer algumas funçoes.

Realizei a funcao de apagar o ultimo elemento da lista, mas aparentemente nao apaga.

int Remover_fim_LS(Tno_ls **inicio){
   Tno_ls *percorre;
   Tno_ls *auxiliar;
   percorre = *inicio;

   if(*inicio == NULL){
    printf("\nLISTA VAZIA ! \nRemocao do FIM Impossivel\n");
    return 1;
   }else{
    //percorre a lista
    while(percorre->prox != NULL){
		    if(percorre->prox != NULL){
			    auxiliar = percorre;
			    percorre = percorre->prox;

		    }else{
			    percorre->prox = NULL;
			    free(percorre);
			    return 0;
		    }
    }
  }
}

ao chamar a funcao passo o &ini, dessa maneira

erro = Remover_fim_LS(&ini);

Alguem poderia me ajudar quanto a isso? nao consigo identficar o erro.

Obrigado.

Link to comment
Share on other sites

bom, ele simplesmente para o programa, pq sendo um elemento só, ao apagar o fim, ele irá apagar o único elemento, então não faz sentido.

Estava tentando realizar mais alguns testes, e acabei chegando em um resultado, mas mesmo assim não me entra na cabeça o porque dessa linha:

while(percorre != NULL){...

Verificando dessa maneira, ele não iria virar um loop infinito (pensando é claro, que há elementos dentro da lista)?

bom, eis o codigo que funciona:

int Remover_fim_LS(Tno_ls **inicio){
   Tno_ls *percorre;
   Tno_ls *auxiliar ;
   //auxiliar = *inicio;
   percorre = *inicio;
   //percorre a lista

   if(*inicio == NULL){
    printf("\nLista vazia\nRemocao de fim impossivel");
    return 1;
   }else{
    while(percorre != NULL){
	    if(percorre->prox != NULL){
		    auxiliar = percorre;
		    percorre = percorre->prox;
	    }else{
		    auxiliar->prox = NULL;
		    free(percorre);
		    return 0;
	    }
    }
   }
}
Link to comment
Share on other sites

funciona mais ou menos ... responde :

- o que acontece se a lista só tiver um elemento ?

- qual e para que serve o valor de retorno da função ?

1º: nao havia pensado nessa excessao, nem realizado algo com ela...

2º: serve para reconhecimento de erros, 1 = erro , 0=sucesso, os quais sao tratados no começo do codigo, que nao está aqui, mas é tratado.

Edited by PlayMa256
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.