English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات أساسيات Java

Java Control Flow

Java Array

Java Object-Oriented (I)

Java Object-Oriented (II)

Java Object-Oriented (III)

معالجة الاستثناءات في Java

Java List

Java Queue (Queue)

Java Map Collection

Java Set Collection

Java Input/Output (I/O)

Java Reader/Writer

موضوعات أخرى في Java

حصول برنامج Java على العنصر الوسط لـ LinkedList من خلال تمرير مرة واحدة

   جميع الأمثلة Java

في هذا المثال، سنتعلم كيفية الحصول على العنصر الوسط لـ LinkedList في تمرير مرة واحدة في Java.

للحصول على هذا المثال، تأكد من أنك قمت بزيارة التدريب التالي أولاً،

مثال 1: الحصول على العنصر الوسط لـ LinkedList من خلال تمرير مرة واحدة

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);
    //ربط كل عقدة في قائمة المتصلة بالعقدة التالية
    linkedList.head.next = second;
    second.next = third;
    //طباعة قائمة المتصلة
    Node pointer = linkedList.head;
    System.out.print("LinkedList: ");
    while (pointer != null) {
      System.out.print(pointer.value + " ");
      pointer = pointer.next;
    }
    //إيجاد العنصر الوسط
    Node ptr1 = linkedList.head;
    Node ptr2 = linkedList.head;
    while (ptr1.next != null) {
      //زيادة ptr1 بـ2، وزيادة ptr2 بـ1
      //إذا كان ptr1 يشير إلى العنصر الأخير
      //ptr2 سيقوم بالإشارة إلى العنصر الوسط
      ptr1 = ptr1.next;
      if(ptr1.next != null) {
        ptr1 = ptr1.next;
        ptr2 = ptr2.next;
      }
    }
    System.out.println("\nالعنصر الوسط: " + ptr2.value);
  }
}

نتائج الإخراج

LinkedList: 1 2 3 
العنصر الوسط: 2

في المثال السابق، قمنا بإنشاء بنية البيانات لقائمة المتصلة باستخدام Java. ثم عثرنا على العنصر الوسط في دورة واحدة. لاحظ الكود،

    while (ptr1.next != null) {
      //زيادة ptr1 بـ2، وزيادة ptr2 بـ1
      //إذا كان ptr1 يشير إلى العنصر الأخير
      //ptr2 سيقوم بالإشارة إلى العنصر الوسط
      ptr1 = ptr1.next;
      if(ptr1.next != null) {
        ptr1 = ptr1.next;
        ptr2 = ptr2.next;
      }
    }

في هذا المكان، لدينا متغيران ptr1 وptr2. نستخدم هذه المتغيرات لتدوير قائمة المتصلة.

في كل تدوير، سيزور ptr1 عقدتين، بينما سيزور ptr2 عقدة واحدة من قائمة المتصلة.

الآن، عندما يصل ptr1 إلى نهاية قائمة المتصلة، سيكون ptr2 في الوسط. بهذا، يمكننا الحصول على موقع العنصر الوسط في مرة واحدة من التدوير.

مثال2: استخدام LinkedList class للحصول على العنصر الوسط لLinkedList

import java.util.LinkedList;
class Main {
  public static void main(String[] args){
    //استخدام LinkedList class لإنشاء قائمة متصلة
    LinkedList<String> animals = new LinkedList<>();
    //إضافة العناصر إلى LinkedList
    animals.add("Dog");
    animals.addFirst("Cat");
    animals.addLast("Horse");
    System.out.println("LinkedList: " + animals);
    //الوصول إلى العنصر الموجود في منتصف الموقع
    String middle = animals.get(animals.size() / 2);
    System.out.println("العنصر الموجود في منتصف الموقع: " + middle);
    }
}

نتائج الإخراج

LinkedList: [Cat, Dog, Horse]
العنصر الموجود في منتصف الموقع: Dog

في هذا المثال، استخدمنا فئة LinkedList لتحقيق بنية البيانات قائمة بالروابط. لاحظ العبارة

animals.get(animals.size() / 2)
  • size() / 2 - العودة إلى موقع العنصر الموجود في منتصف الموقع

  • get() - العودة إلى العنصر الموجود في منتصف الموقع

جميع الأمثلة Java