Java programm LinkedListi keskmise elemendi saamiseks ühes iteratsioonis

Selles näites õpime saama lingitud loendi keskmise elemendi Java-s ühe iteratsioonina.

Selle näite mõistmiseks külastage kõigepealt järgmisi õpetusi,

  • Java LinkedList klass
  • LinkedList andmestruktuur

Näide 1: hankige LinkedListi keskmine element ühe otsinguga

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

Väljund

 LinkedList: 1 2 3 keskmine element: 2

Ülaltoodud näites oleme Java-s rakendanud lingitud loendi andmestruktuuri. Seejärel leiame lingitud loendi keskmise elemendi ühes silmus. Pange tähele koodi,

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

Siin on meil kaks muutujat ptr1 ja ptr2. Kasutame neid muutujaid lingitud loendi kaudu kordamiseks.

Igas iteratsioonis pääseb ptr1 juurde kahele sõlmele ja ptr2 lingitud loendi ühele sõlmele.

Nüüd, kui ptr1 jõuab lingitud loendi lõppu, jääb ptr2 keskele. Sel moel saame lingitud loendi keskosa ühe iteratsioonina.

Näide 2: hankige LinkedListi keskmine element, kasutades klassi 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); ) )

Väljund

 LinkedList: (kass, koer, hobune) keskmine element: koer

Ülaltoodud näites oleme LinkedListklassi kasutanud lingitud loendi andmestruktuuri juurutamiseks. Pange tähele väljendit

 animals.get(animals.size()/2)
  • size () / 2 - tagastab keskmise elemendi positsiooni
  • get () - tagastab elemendi keskmises positsioonis

Huvitavad Artiklid...