鍊錶是一種資料結構,其中每個節點都包含兩部分,資料和位址路徑。這些部分指向下一個節點,該節點始終與先前的節點建立互連。基於此,循環鍊錶是最後一個節點與第一個節點有內部鏈接,這就是這種類型的鍊錶稱為循環鍊錶。
在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中文網其他相關文章!