English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo esempio, impareremo a ottenere l'elemento medio di una LinkedList in una singola iterazione in Java.
Per comprendere questo esempio, assicurati di aver visitato prima i seguenti tutorial:
class LinkedList { //创建Node类的对象 //表示链表的头部 Node head; //静态内部类 static class Node { int value; //将每个节点连接到下一个节点 Node next; Node(int d) { value = d; next = null; } } public static void main(String[] args) { //创建一个LinkedList对象 LinkedList linkedList = new LinkedList(); //为每个链表节点赋值 linkedList.head = new Node(1); Node second = new Node(2); Node third = new Node(3); //Collegare ogni nodo della lista al nodo successivo linkedList.head.next = second; second.next = third; //Stampare la lista Node pointer = linkedList.head; System.out.print("LinkedList: "); while (pointer != null) { System.out.print(pointer.value + " "); pointer = pointer.next; } //Trovare l'elemento centrale Node ptr1 = linkedList.head; Node ptr2 = linkedList.head; while (ptr1.next != null) { //aumenta ptr1 di 2 e ptr2 di 1 //se ptr1 punta all'ultimo elemento //ptr2 punterà all'elemento centrale ptr1 = ptr1.next; if(ptr1.next != null) { ptr1 = ptr1.next; ptr2 = ptr2.next; } } System.out.println("\nElemento centrale: " + ptr2.value); } }
Risultato di output
LinkedList: 1 2 3 Elemento centrale: 2
Nel esempio sopra, abbiamo implementato la struttura dati della lista collegata in Java. Poi, abbiamo trovato l'elemento centrale nella lista in un ciclo.
while (ptr1.next != null) { //aumenta ptr1 di 2 e ptr2 di 1 //se ptr1 punta all'ultimo elemento //ptr2 punterà all'elemento centrale ptr1 = ptr1.next; if(ptr1.next != null) { ptr1 = ptr1.next; ptr2 = ptr2.next; } }
In questo caso, abbiamo due variabili ptr1 e ptr2. Utilizziamo queste variabili per esplorare la lista.
In ogni iterazione, ptr1 accederà a due nodi, mentre ptr2 accederà a un singolo nodo della lista.
Ora, quando ptr1 raggiunge la fine della lista collegata, ptr2 si troverà al centro. In questo modo, possiamo ottenere la posizione centrale della lista in un singolo passaggio di iterazione.
import java.util.LinkedList; class Main { public static void main(String[] args){ //使用 LinkedList 类创建链表 LinkedList<String> animals = new LinkedList<>(); //Aggiungi elementi alla LinkedList animals.add("Dog"); animals.addFirst("Cat"); animals.addLast("Horse"); System.out.println("LinkedList: " + animals); //Accesso all'elemento centrale String middle = animals.get(animals.size() / 2); System.out.println("Elemento centrale: " + middle); } }
Risultato di output
LinkedList: [Cat, Dog, Horse] Elemento centrale: Dog
Nell'esempio sopra, abbiamo utilizzato la classe LinkedList per implementare la struttura dati elenco. Notare l'espressione
animals.get(animals.size() / 2)
size() / 2 - Restituisce la posizione dell'elemento centrale
get() - Restituisce l'elemento situato nella posizione centrale