Java 程序在循环链表中搜索元素
什么是 Liked List 和循环链表?
链表是一种数据结构,其中每个节点包含两个部分,即数据和地址路径。这些部分指向下一个节点,该节点始终与前一个节点建立互连。基于此,循环链表的最后一个节点与第一个节点具有互连,这就是这些类型的链表被称为循环链表的原因。
在 Java 环境中,当我们在循环链表中搜索元素时,需要在列表中创建一个临时节点来指向。为此,我们需要声明另外两个变量。它们是轨道索引和轨道搜索。如果 Temp 节点在起点处为空,则遍历列表很重要,因为此时它不包含任何项目。
循环链表的工作原理及其应用?
循环链表的工作方法
对于循环链表,用户可以在该特定列表的任何位置输入数据(在不可能是相邻内存的数组中)。在此链接列表中,后向数据存储下一个节点的地址。通过这种方式,数据以循环方式指向彼此,形成大小动态的循环链。这里的动态意味着;内存分配将按要求进行。
需要记住以下几点
任何节点都可以作为循环链表的起点
数据列表可以从任何随机节点遍历
这里没有指向第一个节点的指针
循环链表的应用
我们个人电脑中使用的循环链表同时是多个应用程序执行其任务。
用于创建循环队列。
在多人游戏中循环切换玩家。
用于 Word 或 Photoshop 应用程序中的撤消功能。
循环链接的算法列表
循环链表的实现和操作方法非常简单。有两个特征,数据和下一个。要定义另一个循环链表,我们可以使用:head 和 tail。新节点始终由"当前节点"定义,它将指向链表的头部。每次迭代后,点都会移动到下一个节点。
步骤 1 − 通过给定值声明一个 newNode()。
步骤 2 − 搜索 void 列表。
步骤 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。如果 head 的位置为空,则整个列表为空。否则遍历整个列表。如果输出为零,则列表中未找到该元素。
示例
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在循环链表中搜索元素。