Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/04/2011, 12:13
Avatar de Lobito14
Lobito14
 
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años, 7 meses
Puntos: 17
[C++] Problema con función para borrar ultimo nodo de una lista enlazada

Buenas, mi problema es el siguiente: he hecho una función, para borrar el ultimo elemento de una lista enlazada, tal como dice el título del post. A esta función se le pasa la dirección de memoria del nodo raiz, y a partir de ahi buscaríamos el ultimo nodo de la lista para borrarlo y poner el penultimo apuntando a NULL.

Estoy haciendo algo mal, porque al ejecutar el programa, muestro por pantalla la lista, y lo que me muestra, creo entender, es una dirección de memoria.

Aqui os pongo la función para borrar el ultimo nodo, he repasado todo de arriba a abajo y no se que es lo que hago mal, si necesitais que ponga el programa entero lo pongo sin problemas.

Código C++:
Ver original
  1. void eliminaUltimo(nodo **r){
  2.    
  3.     nodo *ulti = *r;
  4.     nodo *penulti = *r;
  5.    
  6.    
  7.     if(*r!=NULL){
  8.        
  9.         if(ulti->siguiente = NULL){
  10.            
  11.             *r = NULL;
  12.             delete ulti;
  13.        
  14.         }else{
  15.            
  16.             while(ulti->siguiente != NULL){
  17.                 ulti = ulti->siguiente;
  18.                 penulti -> siguiente = ulti;
  19.             }
  20.            
  21.             penulti->siguiente = NULL;
  22.             delete ulti;
  23.         }
  24.     }
  25.    
  26. }

Un saludo y gracias.