首頁 >Java >java教程 >Java程式:在循環鍊錶中搜尋元素

Java程式:在循環鍊錶中搜尋元素

王林
王林轉載
2023-09-11 11:45:04779瀏覽

Java程式:在循環鍊錶中搜尋元素

什麼是喜歡清單和循環鍊錶?

鍊錶是一種資料結構,其中每個節點都包含兩部分,資料和位址路徑。這些部分指向下一個節點,該節點始終與先前的節點建立互連。基於此,循環鍊錶是最後一個節點與第一個節點有內部鏈接,這就是這種類型的鍊錶稱為循環鍊錶。

在Java環境中,當我們尋找元素循環鍊錶時,需要在鍊錶中建立一個暫存節點來指向。這樣我們還需要宣告兩個變數。它們是曲目索引和曲目搜尋。如果 Temp 節點在起始點為空,那麼遍歷清單就很重要,因為此時它不包含任何項目。

循環鍊錶的工作原理及其應用?

循環鍊錶的工作方法

對於循環鍊錶,使用者可以在該特定清單中的任何位置輸入資料(在不可能是相鄰記憶體的陣列中)。在這個鍊錶中,向後資料儲存的是下一個的位址節點。透過這種方式,資料以循環方式相互指向,形成大小動態的循環鏈。這裡動態的意思是;記憶體分配將根據要求完成。

需要記住以下幾點

  • 任意節點都可以作為迴圈鍊錶的起點

  • 資料列表可以從任意隨機節點開始遍歷

  • 這裡沒有第一個節點的指標

循環鍊錶的應用

  • 我們個人電腦中使用的循環鍊錶是同時執行其任務的多個應用程式。

  • 用於建立循環隊列。

  • 在多人遊戲中循環切換玩家。

  • 用於 Word 或 Photoshop 應用程式中的撤銷功能。

循環鍊錶演算法

循環鍊錶的實作和操作方法非常簡單。有兩個特徵,data 和 next。要定義另一個循環鍊錶,我們可以使用:頭和尾。新節點始終由“當前節點”定義,它將指向鍊錶的頭部。每次迭代後點都會移動到下一個節點。

  • 第 1 步 - 透過給定值宣告一個 newNode()。

  • 第 2 步 - 搜尋無效清單。

  • 步驟 3 − 若結果為 void,則 head = newNode()。

  • 步驟 4 - 否則,將節點指標定義為 temp 並初始化。

循環鍊錶的語法

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

在此語法中,清單中存在的每個節點都有資料和指標部分,用於在接收新輸入時建立新節點。

我們可以使用以下方法來搜尋特定清單中的元素 -

  • 透過將新資料加入到特定清單中

  • 透過搜尋特定循環鍊錶中的元素

透過將新資料新增至特定的連結清單

在新節點中加入一些新元素有助於從循環鍊錶中找出某些特定資料。首先,您需要將一個新節點插入到分配的記憶體中。儲存新資料後,可以將下一個資料變更到新節點。您也可以在節點末尾儲存其他資料並套用遍歷。

範例

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);  
   }  
} 

輸出

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

透過在特定循環鍊錶中搜尋元素

首先,您需要初始化一個節點,然後計數器 f=0。如果頭的位置為空,則整個清單為空。否則遍歷完整清單。如果輸出為零,則在清單中找不到該元素。

範例

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);
   }
} 

輸出

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

結論

使用循環鍊錶有很多優點和缺點。最重要的優點是可以從鍊錶的任意節點發起遍歷作業。不需要使用 NULL,對於 CPU 循環調度非常有用。但最大的缺點是,如果清單沒有以正確的程式設計方式編寫,則可能會變成無限循環,伺服器可能會掛起。透過這篇文章,我們學習如何使用Java在循環鍊錶中尋找元素。

以上是Java程式:在循環鍊錶中搜尋元素的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除