Ich hatte eine harte Zeit, meinen Kopf um Zeiger und verkettete Listen zu wickeln. Ich kann sehen, dass diese Art von Fragen hier sehr häufig gestellt werden, also entschuldige ich mich, dass ich sie in den Sumpf dieses Forums gebracht habe. Allerdings habe ich versucht, diese Aufgabe für zwei Tage zu übernehmen, und ich kann es einfach nicht verstehen.C++ Kopieren Konstruktor der Werte der verknüpften Liste, nicht Adressen
Ich sollte darauf hinweisen, dass dies eine Hausaufgabe ist!
Ich habe ein Projekt, bei dem ich eine verknüpfte Liste kopieren, die alte Liste zerstören und die Werte beibehalten muss. Ich muss fast die gesamte Liste als Referenz an den Kopierkonstruktor übergeben, nicht nur einen Knoten.
Coding a function to copy a linked-list in C++
Wenn ich versuche:
Ich habe einige wirklich gute Antworten schon hier gesehen, nachdem einige graben tun, und in der Nähe Ich habe eine Lösung zu dem, was ich erreichen müssen diese gesehen ist einen ähnlichen Code Mine zu implementieren, ist es mir diesen Fehler gibt beim Kompilieren: Fehler: ungültiges Typargument von einstelligen ‚*‘ (hat ‚int‘) verkettete Liste
Hier ist der Code:
IntList::IntList(const IntList &a){
if(a.head != NULL)
{
ListNode *thisNode = a.head;
ListNode *nextN = NULL;
while(thisNode != NULL)
{
ListNode *newNode = new ListNode;
newNode->value = (*thisNode->value); //error occurs here
if(nextN == NULL)
{
nextN = newNode;
}
else
{
nextN->next = newNode;
nextN = nextN->next;
}
thisNode = thisNode->next;
size++;
}
}
else
{
cout << "The list empty." << endl;
return;
}
}
Wenn ich die Verkapselung in Zeile 10 entferne, gibt der Konstruktor keinen Fehler aus. Sobald ich jedoch den Destruktor anrufe, verweist die alte Liste immer noch auf den Speicher, der gerade geleert wurde.
Ich schätze wirklich jede Hilfe bei dieser Aufgabe. Ich denke, dass ich den Zeiger nicht richtig deneferenziere, aber ich kann nicht scheinen, um den Code zu brechen und es zum Funktionieren zu bringen ...
Willkommen bei StackOverflow. Bitte nehmen Sie die [Tour], lernen, gute Fragen zu stellen stackoverflow.com/help/how-to-ask, machen eine [MCVE]. Wenn Sie Hilfe mit dem Debugging-Code suchen, siehe https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Yunnosch
Sie sollten newNode-> value = thisNode-> Wert – Kapil