Die beiden verknüpften Listen sind umgekehrt, dh der Schwanzzeiger der anderen verknüpften Kettentabelle wird vom Fusion vom Heckzeiger einer verknüpften Liste auf die andere verlinkte Liste umgekehrt. Im Folgenden werden die Idee und der Implementierungscode der Umkehrwechsel der beiden verknüpften Listen ausführlich eingeführt.
1. Problembeschreibung
Links a und b
A: 1-> 2-> 3-> 4
B: A-> B-> C-> D.
Bitte umkehren Sie die beiden verknüpften Liste abwechselnd.
4-> d-> 3-> c-> 2-> b-> 1-> a
Die Definition des Knotentyps lautet wie folgt:
ClassNode {öffentlicher Knoten als nächstes; 2. Quellcode:
Nach der Verarbeitung werden zwei A- und B verlinkte Listen an die verlinkte Liste übergeben:
Node Reverse_Merge (Knoten A, Knoten B) {// A, B haben nur einen Knoten if (A.Next ==) {A.Next = B; .Next; ; A.Next = B; Drei, Analyse:
Das Programm ist in drei Teile unterteilt -vor dem WHHE -Zyklus, dem WHHE -Zyklus und dem WHHE -Zyklus.
1) Verarbeitung der vorherigen verknüpften Liste A und B
2) Während des Zyklus -Der Kernverarbeitungsteil des Verarbeitungsprozesses kann hier wiederholt werden.
Der Knoten, in dem sich A in speziell verarbeiteten A befindet. Nur für den Knoten, in dem sich A befindet, ist ein nächster = NULL -Operation erforderlich, was bedeutet, dass das erste Atom in 1 außerhalb des Zyklus implementiert werden sollte.
Wenn Sie die 2 -Methode verwenden, müssen Sie nur 1 Finger in einen Zyklus bringen. Daher wird die in 2 beschriebene Atomstruktur hier verwendet.
Informationen, die durch Atomstruktur erforderlich sind
Wenn wir zu einem bestimmten Zyklus untergehen, unter der Annahme der Betrieb des blauen Kreises, lautet der Zustand unserer verlinkten Liste:
Die intuitivere Zeichenmethode ist:
Es umfasst 3 Knoten -2,3 und C. Der rote Teil ist die Link -Methode, die wir tun möchten. Um C-> 2,3-> C zu verknüpfen, müssen wir wissen, dass es entsprechende Hinweise gibt, um ihre Position aufzuzeichnen. Daher müssen wir vor dem Zyklus die Adresse dieser drei Elemente und nach der Verarbeitung auf die gleiche Weise die Atomstruktur meistern, die auf die gleiche Weise verarbeitet werden muss.
Beispielsweise zeichnet die folgende Methode die Adresse der drei in diesem Zyklus entworfenen Knoten auf:
A, Na und B repräsentieren den Zeiger oder den Verweis auf die entsprechenden Knoten.
Nach Abschluss der Verarbeitung müssen Sie die an der nächsten Atomstruktur beteiligten Knoten auf die gleiche Weise aufzeichnen, um sicherzustellen, dass der Zyklus gemäß der einheitlichen Logik ausgeführt werden kann.
Diese Zuordnungsvorgänge sind genau das, was der Medium -Code des Zykluskörpers tut. Darüber hinaus ist Nextb als Zwischenvariable im Code definiert, um die Adresse des vorherigen D-Knotens vor dem C-> D zu erfassen, da der C bis 2 den Kontakt D verliert. Diese Zwischenvariable ist erforderlich.
3) Vor dem gesamten Schleifen -lösen
Wir haben keinen Knoten A behandelt, weil er zu speziell ist und es keine geeignete Atomstruktur gibt, die sie beinhalten kann. Wir stellen es also außerhalb des Zyklus und bereiten uns auf die Zirkulation vor.
Danach können wir 1, 2 und B in den Zyklus legen. Hier gibt es nur einen Knoten A und B, der auch separat verarbeitet werden muss.
4) Nach der gesamten Schleife -die endgültige Verarbeitung
Wenn wir feststellen, dass die von B verknüpfte Liste das Ende erreicht, ist der Zyklus vorbei. Aber zu diesem Zeitpunkt gibt es einen Handhabungsknoten. Unser Zyklus wird in dieser Atomstruktur aufhören:
Als endgültige Operation müssen wir die Verbindungsschritte von D-> 3,4-> D-d-dies auch auf keinen Fall verarbeiten, da die Behandlung der Atomstruktur nicht vorhanden ist.
Dies ist kein vollständiger Weg, und es gibt viele Dinge, die nicht verarbeitet wurden. Darüber hinaus ist die Knotendatenstruktur nicht vollständig definiert, aber dies ist nicht der Schwerpunkt dieses Artikels.
In der oben genannten detaillierten Analyse hoffe ich, jedem die Methoden und die Implementierung der beiden verknüpften Liste alternative Fusionen zu verstehen.