Ich möchte ein Element als zweites Element in eine Liste einfügen, um eine neue Liste zu erstellen, ohne die ursprüngliche zu ändern.In Liste an zweiter Position einfügen C++
Beispiel: Liste 1 2 3 4 5, cin >> 55, dann werden neue Liste 55 1 2 3 4 5
Problem ist, dass beide Listen modifiziert sind. Warum passiert dies?
ptr_list insertAfterFirstElem(ptr_list head){
ptr_list tmp;
tmp=new list;
cout<<"Insert value"<<endl;
cin>>tmp->val;
tmp->next=head->next;
head->next=tmp;
return (head);
}
Ich schrieb eine insertAtTop Funktion, die gut funktioniert:
ptr_list insertAtTop(ptr_list head){
ptr_list tmp;
tmp=head;
head=new list;
cout<<"Insert value"<<endl;
cin>>head->val;
head->next=tmp;
return (head);
}
Können Sie erklären, was ist der Unterschied zwischen diesen beiden Funktionen? Warum ändert insertAtTop() die ursprüngliche Liste nicht?
Wo erstellen Sie eine neue Liste? Sie erstellen einen neuen Knoten und fügen ihn der ursprünglichen Liste hinzu. – Bhargava