Heim > Backend-Entwicklung > C++ > Hauptteil

Suchelement in einer verknüpften Liste mit C++

WBOY
Freigeben: 2023-09-10 15:01:02
nach vorne
809 Leute haben es durchsucht

Suchelement in einer verknüpften Liste mit C++

Um nach einem Element in einer verknüpften Liste zu suchen, müssen wir die gesamte verknüpfte Liste durchlaufen, jeden Knoten mit den erforderlichen Daten vergleichen und weiter suchen, bis wir eine Übereinstimmung erhalten. Da verknüpfte Listen keinen Direktzugriff ermöglichen, müssen wir mit der Suche beim ersten Knoten beginnen.

Wir erhalten eine verknüpfte Liste von Ganzzahlen und einen Ganzzahlschlüssel. Wir müssen herausfinden, ob dieser Schlüssel in unserer verknüpften Liste vorhanden ist. Wir können eine einfache lineare Suche in der verknüpften Liste durchführen, um den Schlüssel zu finden. Wenn es existiert, können wir „Ja“ zurückgeben, andernfalls „Nein“

Schauen wir uns einige Eingabe- und Ausgabeszenarien an -

Wir haben eine Liste abgerufen, in der wir herausfinden müssen, ob das Element in der Liste vorhanden ist, und die entsprechende Ausgabe mit dem bereitgestellten Schlüssel 3 erhalten müssen -

Input Data: [ 10, 4, 5, 4, 10, 1, 3, 5]
Output: Yes
Nach dem Login kopieren

Betrachten wir ein anderes Szenario mit Schlüssel 5 -

Input Data: [ 1, 4, 9, 4, 10, 1, 3, 6]
Output: No
Nach dem Login kopieren

Algorithmus (Schritte)

Hier sind die Algorithmen/Schritte, die befolgt werden müssen, um die erforderliche Aufgabe auszuführen -

  • Setzen Sie die Kopfzeile auf leer.

  • Fügen Sie einige Elemente zur verknüpften Liste hinzu

  • Rufen Sie die vom Benutzer eingegebenen Elemente zur Suche ab.

  • Durchlaufen Sie die verknüpfte Liste linear vom Anfang bis zum Ende, bis Sie einen leeren Knoten erreichen.

  • Überprüfen Sie jeden Knoten, um zu sehen, ob der Datenwert mit dem gesuchten Element übereinstimmt.

  • Gibt den Index des Knotens zurück, auf dem die Daten gefunden wurden. Wenn nicht gefunden, gehen Sie zum nächsten Knoten.

Beispiel

Zum Beispiel haben wir eine verknüpfte Liste wie „52->4651->42->5->12587->874->8->null“, deren Schlüssel 12587 ist. Das C++-Programm, das dieses Beispiel implementiert, ist unten angegeben -

#include <iostream>
using namespace std;
class Node {
   public:
   int val;
   Node* next;
   Node(int val) {
      this->val = val;
      next = NULL;
   }
};
void solve(Node* head, int key) {
   while(head) {
      if(head->val == key) {
         cout << "Yes";
         return;
      }
      head = head->next;
   }
   cout << "No";
}
int main() {
   Node* head = new Node(52);
   head->next = new Node(4651);
   head->next->next = new Node(42);
   head->next->next->next = new Node(5);
   head->next->next->next->next = new Node(12587);
   head->next->next->next->next->next = new Node(874);
   head->next->next->next->next->next->next = new Node(8);
   solve(head, 12587);
   return 0;
}
Nach dem Login kopieren

Ausgabe

Yes
Nach dem Login kopieren
Nach dem Login kopieren

Beispiel

Jetzt werden wir die rekursive Methode verwenden, um dasselbe Problem zu lösen -

#include <iostream>
using namespace std;
class Node {
   public:
   int val;
   Node* next;
   Node(int val) {
      this->val = val;
      next = NULL;
   }
};
void solve(Node* head, int key) {
   if(head == NULL) {
      cout << "No";
   } else if(head->val == key) {
      cout << "Yes";
   } else {
      solve(head->next, key);
   }
}
int main() {
   Node* head = new Node(52);
   head->next = new Node(4651);
   head->next->next = new Node(42);
   head->next->next->next = new Node(5);
   head->next->next->next->next = new Node(12587);
   head->next->next->next->next->next = new Node(874);
   head->next->next->next->next->next->next = new Node(8);
   solve(head, 12587);
   return 0;
}
Nach dem Login kopieren

Ausgabe

Yes
Nach dem Login kopieren
Nach dem Login kopieren

Fazit

Die Zeitkomplexität ist O(n). Zur Lösung dieses Problems verwenden wir einen iterativen Ansatz. Versuchen Sie dieses Problem rekursiv.

Das obige ist der detaillierte Inhalt vonSuchelement in einer verknüpften Liste mit C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!