Heim  >  Artikel  >  Java  >  Java-Programm: Suche nach Elementen in einer zirkulären verknüpften Liste

Java-Programm: Suche nach Elementen in einer zirkulären verknüpften Liste

王林
王林nach vorne
2023-09-11 11:45:04725Durchsuche

Java-Programm: Suche nach Elementen in einer zirkulären verknüpften Liste

Was sind Like-Listen und zirkulär verknüpfte Listen?

Eine verknüpfte Liste ist eine Datenstruktur, in der jeder Knoten zwei Teile enthält: Daten und Adresspfad. Diese Abschnitte verweisen auf den nächsten Knoten, der immer eine Verbindung zum vorherigen Knoten herstellt. Auf dieser Grundlage handelt es sich bei einer zirkulär verknüpften Liste um eine Liste, bei der der letzte Knoten eine interne Verknüpfung mit dem ersten Knoten hat, weshalb diese Art von verknüpfter Liste als zirkulär verknüpfte Liste bezeichnet wird.

Wenn wir in der Java-Umgebung nach Elementen in einer zirkulär verknüpften Liste suchen, müssen wir einen temporären Knoten in der verknüpften Liste erstellen, auf den wir verweisen. Auf diese Weise müssen wir noch zwei Variablen deklarieren. Sie sind Titelindex und Titelsuche. Wenn der Temp-Knoten am Startpunkt leer ist, ist es wichtig, die Liste zu durchlaufen, da sie zu diesem Zeitpunkt keine Elemente enthält.

Wie funktioniert eine zirkuläre verknüpfte Liste und welche Anwendungen gibt es?

So funktioniert eine zirkuläre verknüpfte Liste

Bei einer zirkulär verknüpften Liste kann der Benutzer Daten an einer beliebigen Stelle in dieser bestimmten Liste eingeben (in einem Array, was im zusammenhängenden Speicher nicht möglich ist). In dieser verknüpften Liste werden die Rückwärtsdaten als nächster Adressknoten gespeichert. Auf diese Weise verweisen Daten kreisförmig aufeinander und bilden kreisförmige Ketten mit dynamischen Größen. Hier bedeutet dynamisch: Die Speicherzuweisung erfolgt je nach Bedarf.

Sie müssen die folgenden Punkte beachten

  • Jeder Knoten kann als Ausgangspunkt der zirkulär verknüpften Liste verwendet werden

  • Die Datenliste kann ausgehend von jedem beliebigen Knoten durchlaufen werden

  • Hier gibt es keinen Hinweis auf den ersten Knoten

Anwendung einer kreisförmigen verknüpften Liste

  • Zirkulär verknüpfte Listen, die in unseren PCs verwendet werden, sind mehrere Anwendungen, die ihre Aufgaben gleichzeitig ausführen.

  • Wird zum Erstellen kreisförmiger Warteschlangen verwendet.

  • Wechseln Sie durch die Spieler in Multiplayer-Spielen.

  • Für die Rückgängig-Funktion in Word- oder Photoshop-Anwendungen.

Circular Linked List-Algorithmus

Die Implementierungs- und Betriebsmethode einer zirkulär verknüpften Liste ist sehr einfach. Es gibt zwei Merkmale: Daten und Weiter. Um eine weitere zirkulär verknüpfte Liste zu definieren, können wir Folgendes verwenden: Kopf und Schwanz. Der neue Knoten wird immer durch den „aktuellen Knoten“ definiert, der auf den Kopf der verknüpften Liste zeigt. Der Punkt bewegt sich nach jeder Iteration zum nächsten Knoten.

  • Schritt 1 – Deklarieren Sie einen newNode() mit dem angegebenen Wert.

  • Schritt 2 – Durchsuchen Sie die ungültige Liste.

  • Schritt 3 − Wenn das Ergebnis ungültig ist, dann ist head = newNode().

  • Schritt 4 – Andernfalls definieren Sie den Knotenzeiger als temp und initialisieren ihn.

Syntax der zirkulären verknüpften Liste

struct Node {int dataset; struct Node * to next;};

In dieser Syntax verfügt jeder in der Liste vorhandene Knoten über einen Daten- und Zeigerteil, der zum Erstellen eines neuen Knotens verwendet wird, wenn eine neue Eingabe empfangen wird.

Mit der folgenden Methode können wir nach einem Element in einer bestimmten Liste suchen -

  • Durch Hinzufügen neuer Daten zu einer bestimmten Liste

  • Durch die Suche nach Elementen in einer bestimmten kreisförmig verknüpften Liste

Durch Hinzufügen neuer Daten zu einer bestimmten verknüpften Liste

Das Hinzufügen einiger neuer Elemente in einem neuen Knoten hilft dabei, bestimmte Daten aus der zirkulär verknüpften Liste herauszufinden. Zuerst müssen Sie einen neuen Knoten in den zugewiesenen Speicher einfügen. Nachdem die neuen Daten gespeichert wurden, können die nächsten Daten auf den neuen Knoten geändert werden. Sie können auch zusätzliche Daten am Ende des Knotens speichern und eine Traversierung anwenden.

Beispiel

public class SearchNodearb {   
   public class Nodefind{  
      int datafall;  
      Nodefind next;  
      public Nodefind(int datafall) {  
         this.datafall = datafall;  
      }  
   }  
   public Nodefind head = null;  
   public Nodefind tail = null;  
   public void add(int datafall){   
      Nodefind newNode1 = new Nodefind(datafall);      
      if(head == null) {        
         head = newNode1;  
         tail = newNode1;  
         newNode1.next = head;  
      }  
      else {     
         tail.next = newNode1;
            
         tail = newNode1;         
         tail.next = head;  
      }  
   }  
   public void search(int element) {  
      Nodefind current = head;  
      int i = 1;  
      boolean flagon = false;  
              
      if(head == null) {  
         System.out.println("List is totally Void! So Sad!");  
      }  
      else {  
         do{  
            if(current.datafall ==  element) {  
               flagon = true;  
               break;  
            }  
            current = current.next;  
            i++;  
         }while(current != head);  
         if(flagon)  
         System.out.println("Element is present in the list with a position tag : " + i);  
         else  
         System.out.println("Element is not present in the list");  
      }  
   }  
   public static void main(String[] args) {  
      SearchNodearb cl1 = new SearchNodearb();            
      cl1.add(1000);  
      cl1.add(5000);  
      cl1.add(3);  
      cl1.add(4);  
      cl1.search(2);  
      cl1.search(5000);  
   }  
} 

Ausgabe

Element is not present in the list
Element is present in the list with a position tag: 2

Durch die Suche nach Elementen in einer bestimmten kreisförmig verknüpften Liste

Zuerst müssen Sie einen Knoten initialisieren und dann f=0 zählen. Wenn die Kopfposition leer ist, ist die gesamte Liste leer. Andernfalls durchlaufen Sie die gesamte Liste. Wenn die Ausgabe Null ist, wurde das Element nicht in der Liste gefunden.

Beispiel

public class search {
   class Nodeval {
      int data;
      Nodeval next;
      public Nodeval(int data) { this.data = data; }
   }
   public Nodeval head = null;
   public Nodeval tempo = null;
   public void addNode2001(int data){
      Nodeval new10 = new Nodeval(data);
      if (head == null) {
         head = new10;
      }
      else {
         tempo.next = new10;
      }
      tempo = new10;
      tempo.next = head;
   }
   public void find(int key){
      Nodeval temp07 = head;     
      int f = 0;
      if (head == null) {
         System.out.println("List is empty, Please Fill It ASAP");
      }
      else {
         do {
            if (temp07.data == key) {
               System.out.println(
               "element is present in the running list");
               f = 1;
               break;
            }
            temp07 = temp07.next;
         } while (temp07 != head);
         if (f == 0) {
            System.out.println(
            "element is not present here, I am sorry!");
         }
      }
   }
   public static void main(String[] args){
      search srdd = new search();
      srdd.addNode2001(5);
      srdd.addNode2001(4);
      srdd.addNode2001(3);
      srdd.addNode2001(2);
      srdd.find(2);
      srdd.find(6);
   }
} 

Ausgabe

element is present in the running list
element is not present here, I am sorry!

Fazit

Die Verwendung zirkulär verknüpfter Listen hat viele Vor- und Nachteile. Der wichtigste Vorteil besteht darin, dass Durchlaufvorgänge von jedem Knoten in der verknüpften Liste aus initiiert werden können. Es ist nicht erforderlich, NULL zu verwenden, was für die CPU-Zyklusplanung sehr nützlich ist. Der größte Nachteil besteht jedoch darin, dass es zu einer Endlosschleife kommen kann und der Server hängen bleiben kann, wenn die Liste nicht auf die richtige programmatische Weise geschrieben wird. In diesem Artikel haben wir gelernt, wie man mit Java Elemente in einer zirkulär verknüpften Liste findet.

Das obige ist der detaillierte Inhalt vonJava-Programm: Suche nach Elementen in einer zirkulären verknüpften Liste. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen