Program Java pentru a obține elementul de mijloc al LinkedList într-o singură iterație

În acest exemplu, vom învăța să obținem elementul de mijloc al listei conectate într-o singură iterație în Java.

Pentru a înțelege acest exemplu, asigurați-vă că vizitați mai întâi următoarele tutoriale,

  • Clasa Java LinkedList
  • Structura datelor LinkedList

Exemplul 1: obțineți elementul de mijloc al LinkedList într-o singură căutare

 class LinkedList ( // create an object of Node class // represent the head of the linked list Node head; // static inner class static class Node ( int value; // connect each node to next node Node next; Node(int d) ( value = d; next = null; ) ) public static void main(String() args) ( // create an object of LinkedList LinkedList linkedList = new LinkedList(); // assign values to each linked list node linkedList.head = new Node(1); Node second = new Node(2); Node third = new Node(3); // connect each node of linked list to next node linkedList.head.next = second; second.next = third; // print the linked list Node pointer = linkedList.head; System.out.print("LinkedList: " ); while (pointer != null) ( System.out.print(pointer.value + " "); pointer = pointer.next; ) // Find the middle element Node ptr1 = linkedList.head; Node ptr2 = linkedList.head; while (ptr1.next != null) ( // increase the ptr1 by 2 and ptr2 by 1 // if ptr1 points to last element // ptr2 will points to middle element ptr1 = ptr1.next; if(ptr1.next !=null) ( ptr1 = ptr1.next; ptr2 = ptr2.next; ) ) System.out.println("Middle Element: " + ptr2.value); ) )

Ieșire

 LinkedList: 1 2 3 Element de mijloc: 2

În exemplul de mai sus, am implementat structura de date a listelor legate în Java. Apoi găsim elementul de mijloc al listei legate într-o singură buclă. Observați codul,

  while (ptr1.next != null) ( // increase the ptr1 by 2 and ptr2 by 1 // if ptr1 points to last element // ptr2 will points to middle element ptr1 = ptr1.next; if(ptr1.next !=null) ( ptr1 = ptr1.next; ptr2 = ptr2.next; ) )

Aici avem două variabile ptr1 și ptr2. Folosim aceste variabile pentru a itera prin lista legată.

În fiecare iterație, ptr1 va accesa cele două noduri, iar ptr2 va accesa nodul unic al listei conectate.

Acum, când ptr1 ajunge la sfârșitul listei legate, ptr2 va fi în mijloc. În acest fel, putem obține mijlocul listei conectate într-o singură iterație.

Exemplul 2: obțineți elementul de mijloc al LinkedList utilizând clasa LinkedList

 import java.util.LinkedList; class Main ( public static void main(String() args)( // create a linked list using the LinkedList class LinkedList animals = new LinkedList(); // Add elements to LinkedList animals.add("Dog"); animals.addFirst("Cat"); animals.addLast("Horse"); System.out.println("LinkedList: " + animals); // access middle element String middle = animals.get(animals.size()/2); System.out.println("Middle Element: " + middle); ) )

Ieșire

 LinkedList: (pisică, câine, cal) Element mijlociu: câine

În exemplul de mai sus, am folosit LinkedListclasa pentru a implementa structura de date a listei legate. Observați expresia,

 animals.get(animals.size()/2)
  • size () / 2 - returnează poziția elementului de mijloc
  • get () - returnează elementul în poziția de mijloc

Articole interesante...