PlayMa256 Posted August 18, 2013 at 05:33 PM Report #522018 Posted August 18, 2013 at 05:33 PM 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.
HappyHippyHippo Posted August 18, 2013 at 05:59 PM Report #522021 Posted August 18, 2013 at 05:59 PM exientem vários erros, mas vamos ver o primeiro : - quais as instruções que são executadas quando a lista só tem um elemento ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
PlayMa256 Posted August 18, 2013 at 06:16 PM Author Report #522023 Posted August 18, 2013 at 06:16 PM 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; } } } }
HappyHippyHippo Posted August 18, 2013 at 06:49 PM Report #522026 Posted August 18, 2013 at 06:49 PM 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 ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
PlayMa256 Posted August 18, 2013 at 07:00 PM Author Report #522029 Posted August 18, 2013 at 07:00 PM (edited) 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 August 18, 2013 at 07:00 PM by PlayMa256
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now