es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El puntero cambia el valor de la dirección a la que apunta.

Esperaría que pFirst siempre apuntara al mismo lugar en la dirección. Sin embargo, parece que pFirst se mueve junto con pCurrent aunque la función solo ha ingresado a la declaración Else una vez.

Nota: el código está creando una lista vinculada.

void Push(T data) {
++_size;
Data d = Data(data);
if (_pCurrent != nullptr) _pCurrent->SetNext(&d);
else _pFirst = &d;

_pCurrent = &d;

}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema es que _pFirst se está estableciendo en la dirección de d en lugar de la dirección del nodo en el que se almacena d. Esto significa que cuando se mueve _pCurrent, también se mueve _pFirst. Para solucionar esto, debes establecer _pFirst en la dirección del nodo en el que se almacena d, en lugar de en la dirección de d en sí mismo.

Comments are closed.