Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Eliminar nodo

Estas en el tema de Eliminar nodo en el foro de C/C++ en Foros del Web. Queria saber como hago para elimnar un nodo de una lista en una posicion que me ingresan por parametro?...
  #1 (permalink)  
Antiguo 25/10/2015, 00:16
 
Fecha de Ingreso: abril-2015
Mensajes: 16
Antigüedad: 9 años, 7 meses
Puntos: 0
Eliminar nodo

Queria saber como hago para elimnar un nodo de una lista en una posicion que me ingresan por parametro?
  #2 (permalink)  
Antiguo 25/10/2015, 06:50
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 10 meses
Puntos: 27
Respuesta: Eliminar nodo

Para ello debes utilizar dos punteros:

Un puntero ha de avanzar hasta la posición del elemento a eliminar, y el segundo debe quedarse en la inmediatamente interior a eliminar.
Al puntero segundo le cambias la dirección siguiente por la siguiente de la siguiente.
Eliminas la dirección a la que apunta el puntero primero.
  #3 (permalink)  
Antiguo 25/10/2015, 09:27
 
Fecha de Ingreso: abril-2015
Mensajes: 16
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Eliminar nodo

Esto es lo que tengo, pero no encuentro el error.
en ocaciones me salta segmentation fault y si no lo hace una vez pero cuando lo vuelvo hacer me salta el archivo vacio como si borrara todo.


Código C++:
Ver original
  1. Archivo borrarlinea(Archivo a,int nrolinea)
  2. {
  3.     Archivo anterior,recorro;
  4.     recorro=a;
  5.     anterior=NULL;
  6.     int cantidad,cant;
  7.     cantidad=cantidad_lineas(a->ptr_linea);
  8.  
  9.  
  10.     if(recorro->ptr_linea==NULL)
  11.     {
  12.         cout << "El archivo esta vacio.";
  13.     }
  14.     else
  15.     {
  16.  
  17.         while(recorro->ptr_linea!=NULL)
  18.         {
  19.  
  20.             if(nrolinea==1)
  21.             {
  22.                 a->ptr_linea=(*a).ptr_linea->sig_linea;
  23.                 delete recorro;
  24.             }
  25.             else
  26.             {
  27.                 (*anterior).ptr_linea->sig_linea=(*recorro).ptr_linea->sig_linea;
  28.                 ///anterior->ptr_linea=(*recorro).ptr_linea->sig_linea;
  29.                 delete recorro;
  30.             }
  31.             //return a;
  32.             anterior=recorro;
  33.             recorro->ptr_linea=(*recorro).ptr_linea->sig_linea;
  34.         }
  35.     }
  36.  
  37.     return a;
  38. }
  #4 (permalink)  
Antiguo 26/10/2015, 03:07
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 2 meses
Puntos: 204
Respuesta: Eliminar nodo

Código C:
Ver original
  1. delete recorro;

Si recorro es de tipo Archivo, estás borrando el archivo en vez de únicamente la línea solicitada...

¿No deberías borrar más bien la línea en cuestión?

Código C:
Ver original
  1. delete recorro->ptr_linea;

Etiquetas: nodo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:15.