Título: Insertar enmedio de una lista doblemente enlazada Publicado por: BrendiisFox en 14 Septiembre 2015, 22:40 pm Buenas Tardes!
Estoy trabajando con C++, listas doblemente enlazada. Nos pidieron ingresar al incicio, enmedio y al final, de los cuales ya logre realizar el insertar al inicio y al final. Mi problema es, ¿Como inserto en medio? Me dijeron que es necesario un contador el cual no implemente y no se que tan cierto sera. Le comparto algo del codigo que ya tengo realizado: De antemano muchas gracias Título: Re: Insertar enmedio de una lista doblemente enlazada Publicado por: ivancea96 en 15 Septiembre 2015, 14:47 pm Imagina una lista de 10 elementos. Si te piden insertar un valor para que quede de elemento 3, lo que harías es:
- Empezar desde el nodo de inicio. - Avanzar al siguiente hasta llegar al elemento anterior al actual 3. - Creas el nuevo nodo, y lo enlazas: el SIGUIENTE del nodo 2, lo igualas a la dirección del nodo nuevo. El ANTERIOR del antiguo nodo 3, lo enlazas a la dirección del nuevo nodo. El anterior y el siguiente del nodo nuevo, los enlazas con el segundo y el tercero, respectivamente. Con esto, tienes q tener cuidado de una cosa, y es que la posicion no sea mayor al numero de nodos+1 que tienes. Puedes optimizarlo llamando a InserteAlInicio cuando el parametro de Insertar sea 0, y llamando a InserteAlFinal cuando sea igual al número de nodos. Esto ya como una posibilidad. Y una cosa que te recomiendo encarecidamente: guarda en ListaDobleEnlazada el número de nodos que tiene. Una variable que incrementes al insertar, y que decrementes al quitar. Así te libras de problemas, además de que es un dato esencial. Título: Re: Insertar enmedio de una lista doblemente enlazada Publicado por: BrendiisFox en 16 Septiembre 2015, 18:40 pm Muchas Gracias!
Am, estuve intentando y si, tuve que crear una variable de tamaño la cual incrementa cuando inserto y disminuye cuando elimino. Logre que inserte en medio, pero solo cuando ingreso tres numeros. Si agrego mas, cuando intento ingresar en medio lo coloco detras del primero. Código
Título: Re: Insertar enmedio de una lista doblemente enlazada Publicado por: ivancea96 en 16 Septiembre 2015, 21:05 pm Código
Tienes que recorrer nodo a nodo, hasta posicionarte detrás de la posición del nuevo nodo que meterás. Necesitas usar bucle, ya sea WHILE o FOR. Si es necesario, plantéatelo en papel. Ahora tengo algo de prisa xd |