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

eliminar elemento lista enlazada c++

Estas en el tema de eliminar elemento lista enlazada c++ en el foro de C/C++ en Foros del Web. Hola, El año pasado vi listas pero la verdad ya no recuerdo muy bien como se eliminaban nodos de la lista... Esto es lo que ...
  #1 (permalink)  
Antiguo 25/02/2015, 17:10
 
Fecha de Ingreso: marzo-2014
Mensajes: 41
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta eliminar elemento lista enlazada c++

Hola,
El año pasado vi listas pero la verdad ya no recuerdo muy bien como se eliminaban nodos de la lista...

Esto es lo que tengo hasta ahora:

Código C++:
Ver original
  1. void Lista::eliminarNodo(int posicion){
  2.     actual=primero;
  3.     if(posicion=0){ //esto seria para eliminar el primer elemento, creo que asi esta bien
  4.         primero=primero->getSiguiente();
  5.     }
  6.     else{ //esto para eliminar cualquier otro
  7.     int acum=1; //lo igualo a 1 para obterner la posicion anterior al nodo que quiero eliminar
  8.     while(acum!=posicion){
  9.         actual=actual->getSiguiente();
  10.         acum++;}
  11.     aux=actual;
  12.     aux=aux->getSiguiente(); //aqui aux seria el nodo que quiero eliminar
  13.     actual=aux->getSiguiente(); //aqui uno el nodo anterior al que quiero eliminar con el siguiente
  14.     }
  15.     }

como lo ven?
Busque en google y no vi mucho, en ingles solo me salen unas "list:std" que la verdad no se que sera
  #2 (permalink)  
Antiguo 25/02/2015, 20:04
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: eliminar elemento lista enlazada c++

Esta en ingles, pero es muy visual y sencillo. No creo que tengas problema al interpretarlo.
http://visualgo.net/list.html
  #3 (permalink)  
Antiguo 25/02/2015, 23:05
 
Fecha de Ingreso: marzo-2014
Mensajes: 41
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: eliminar elemento lista enlazada c++

Perfecto, ahora el problema que tengo (y tambien tenia antes) es que me marca un error en actual cuando hago actual->getSiguiente=actual->getSiguiente->getSiguiente
El actual marcado en negrita me da el error de "la expresion debe ser un valor L modificable"
  #4 (permalink)  
Antiguo 26/02/2015, 00:56
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: eliminar elemento lista enlazada c++

Cita:
Iniciado por newb Ver Mensaje
Perfecto, ahora el problema que tengo (y tambien tenia antes) es que me marca un error en actual cuando hago actual->getSiguiente=actual->getSiguiente->getSiguiente
El actual marcado en negrita me da el error de "la expresion debe ser un valor L modificable"
Con el fragmento de código que has puesto es imposible decirte el motivo por el que te está dando ese error.
  #5 (permalink)  
Antiguo 01/03/2015, 16:14
Avatar de Edux099  
Fecha de Ingreso: agosto-2010
Ubicación: Argentina
Mensajes: 1.285
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: eliminar elemento lista enlazada c++

Se utiliza
Código:
free(apuntador);
para liberar el espacio que fue asignado a ese apuntador. Esto se realiza para apuntadores a los que le fue asignado un espacio en memoria dinamicamente, no para variables declaradas.
__________________
Arch Linux user
Emacs user
  #6 (permalink)  
Antiguo 02/03/2015, 15:44
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 8 meses
Puntos: 3
Respuesta: eliminar elemento lista enlazada c++

Cita:
actual->getSiguiente=actual->getSiguiente->getSiguiente
eso no hay por donde cogerlo ya que, en lo que puedo ver de tu codigo, getSiguiente() es una funcion publica de tu clase que devuelve la direccion del siguiente miembro de la lista. En lo que tu hqs puesto ni siquiera le pones los parentesis. Deberias crearte otra funcion publica la cual haga lo que quieres y que reciba como parametro una direccion. Algo asi como setSiguiente(DWORD direccion) y ahi dentro haces la asignacion.

Etiquetas: elemento, enlazada, int, lista
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 09:34.