estaba practicando lista enlazada simple en C++ (practicar cómo encontrar el nodo inicial de la lista circular), pero se encontró con el uso de operador -> muy confuso. Estoy usando Visual Studio 2010 C++ Expressoperador -> no funciona como se esperaba en C++
Esto funciona perfectamente: head->append(2)->append(3)->append(4)->append(5)
Pero esto no funciona (para crear una lista enlazada circular): head->append(2)->append(3)->append(4)->append(5)->append(head->next)
Cuando salto en este método y depurar , parece que head->next
no se pasa correctamente en el método.
Pero esto funciona:
Node* tail=head->append(2)->append(3)->append(4)->append(5); tail->append(head->next);
- o después de cambiar
return c->next
-return head
en los dos métodos,head->append(2)->append(3)->append(4)->append(5)->append(head->next)
también funciona.
¿Qué es lo que falta aquí? ¡Gracias!
detalles de mi código es el siguiente:
void main(){
Node* head=new Node(1);
Node* tail=head->append(2)->append(3)->append(4)->append(5)->append(head->next);
cin.get();
}
class Node{
public:
Node* next;
int data;
bool marked;
Node(int d){
data=d;
marked=false;
next=NULL;
}
Node* append(int d){
Node* c=this;
while(c->next!=NULL){
c=c->next;
}
c->next=new Node(d);
return c->next;
}
Node* append(Node* n){
Node* c=this;
while(c->next!=NULL){
c=c->next;
}
c->next=n;
return c->next;
}
};
es que un nuevo récord para el encadenamiento de indirección – Mysticial
es esta UB por casualidad..?? –
@Mysticial - I Creo que una vez utilicé una cadena más larga en un proyecto, pero lo perdí de vista. –