Wenn wir ein Element in eine Linkliste mit Hilfe des Funktionsaufrufs einfügen, warum ist es notwendig, die Referenz von head anstelle von direkt head zum Beispiel zu übergeben ... wir verwenden void push (struct node ** head_ref, int new_data) anstelle von void push (struct node * head, int new_data) .. wo push ist die funktion, ein element einzufügen ..?Verknüpftes Listeneinfügungsproblem mit Funktionsaufruf
Antwort
Sie nicht genügend Informationen über Ihre Push-Funktion gegeben haben, genau zu bestimmen, warum das Funktionsargument, wie das ist (dh es wird ein Element am Ende oder am Anfang Einfügen?)
Eines der wichtigsten Gründe, einen Zeiger auf einen Zeiger zu übergeben, sind, wenn sich der Kopfzeiger ändert und Sie die Änderung nach dem Funktionsaufruf beibehalten möchten.
Ich kann mir zwei Möglichkeiten vorstellen, warum die Einfügefunktion diese Argumentstruktur hat.
Wenn Ihre Push-Funktion am Ende der Liste eingefügt wird und der Einfügefunktion eine leere Liste (in diesem Fall ein Nullzeiger) zugewiesen wird, würde der Zeiger auf den Kopf von einem Nullzeiger auf die Adresse des einzelnen Elements wechseln eingefügt, der jetzt der Kopf ist.
Wenn Ihre Push-Funktion jedes Mal am Kopf eingefügt wird, ändert sich die Adresse des Kopfknotens ständig.
beispielsweise in der folgenden verketteten Liste der Kopfzeiger zeigt auf den Knoten, die 1:
1 -> 2 -> 3 -> 4
nach dem Datenelement 5 nach vorne schieben die verknüpfte Listendarstellung wie folgt aussehen:
5 -> 1 -> 2 -> 3 -> 4
So 5 ist jetzt, wo der Kopfzeiger zeigen sollte. Wenn die Push-Funktion jedoch die Argumentstruktur von void push(struct node *head_ref, int new_data)
hätte, würde die head_ref nach dem Verlassen der Funktion immer noch auf den Knoten zeigen, der 1 enthält. Bei void push(struct node **head_ref, int new_data)
wird jedoch die Änderung der Position des aktuellen header_ref
im Zeiger darauf gespeichert.
- 1. verknüpftes Bild in reStructuredText
- 2. Wie mit meiner Funktionsaufruf Onclick Funktionsaufruf ersetzen
- 3. Python-Funktionsaufruf mit Variable
- 4. Funktionsaufruf-Analyse mit Clang
- 5. Javascript Funktionsaufruf mit Thymeleaf
- 6. Verknüpftes CSS Stylesheet verbindet nur teilweise
- 7. Fügen Sie ein verknüpftes Bild zu HTML-Körper mit Javascript
- 8. Wordpress importiert mein verknüpftes Stylesheet in-page
- 9. Can `brew link` nicht verknüpftes Keg
- 10. HTML-Formular mit benutzerdefinierten Funktionsaufruf
- 11. Funktionsaufruf in C mit Array
- 12. C++ virtueller Funktionsaufruf versus boost :: Funktionsaufruf speedwise
- 13. JavaScript Funktionsaufruf
- 14. jQuery Funktionsaufruf
- 15. C++ - Funktionsaufruf-Wrapper mit Funktion als Vorlageargument
- 16. Erstellen von Knoten in py2neo mit Funktionsaufruf
- 17. C Funktionsaufruf Auswahl mit ternären Operator
- 18. Fehler mit Vorlagen: keine passende Funktionsaufruf
- 19. plpgsql einfache Anführungszeichen in Funktionsaufruf mit (Python)
- 20. Was ist mit diesem Funktionsaufruf falsch?
- 21. Stack-Struktur nach Funktionsaufruf mit Parametern
- 22. Beispiel mit Super Funktionsaufruf in UVM
- 23. Funktionsaufruf in Knoten js mit Socket
- 24. Mehrdeutige Funktionsaufruf mit zwei Parametern Pack
- 25. Wie Funktionsaufruf mit zwei Rückrufen konvertieren
- 26. Javascript setTimeout Funktionsaufruf mit Event-Argument?
- 27. jQuery Quicksearch markieren Ergebnisse mit onAfter Funktionsaufruf?
- 28. Bedingung mit einem Funktionsaufruf in PowerShell
- 29. Funktionsaufruf funktioniert nicht Python
- 30. Python-Programmausführungsfluss speichern (Funktionsaufruf)
Nicht sicher von der Referenz, nehme ich an, weil der 'Kopf' selbst aktualisiert werden muss. Brauchen Sie den ganzen Code, um eine definitive Antwort zu geben –