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

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

تحكم في العملية Java

مجموعات Java

Java توجيهية الأحداث (I)

Java توجيهية الأحداث (II)

Java توجيهية الأحداث (III)

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

قائمة Java (List)

Java Queue (الصف)

مجموعات Java Map

مجموعات Java Set

إدخال/إخراج Java (I/O)

قراء/كتابة Java

مواضيع أخرى Java

تحقيق بنية البيانات للصف (Queue) باستخدام برنامج Java

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

في هذا المثال، سنتعلم كيفية تحقيق بنية البيانات للصف باستخدام Java.

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

مثال 1: برنامج Java لتحقيق دالة ال堆

public class Queue {
  int SIZE = 5;
  int items[] = new int[SIZE];
  int front, rear;
  Queue() {
    front = -1;
    rear = -1;
  {}
  //检查队列是否已满
  boolean isFull() {
    if (front == 0 && rear == SIZE - 1) {
      return true;
    {}
    return false;
  {}
  //检查队列是否为空
  boolean isEmpty() {
    if (front == -1)
      return true;
    else
      return false;
  {}
  //将元素插入队列
  void enQueue(int element) {
    //如果队列已满
    if (isFull()) {
      System.out.println("Queue is full");
    {}
    else {
      if (front == -1) {
        //标记 front 表示队列的第一个元素
        front = 0;
      {}
      rear++;
      //在后面插入元素
      items[rear] = element;
      System.out.println("Insert " + element);
    {}
  {}
  //从队列中删除元素
  int deQueue() {
    int element;
    //如果队列为空
    if (isEmpty()) {
      System.out.println("Queue is empty");
      return (-1);
    {}
    else {
      //إزالة العنصر من الأمام من الخط
      element = items[front];
      //如果队列中只有一个元素
      if (front >= rear) {
        front = -1;
        rear = -1;
      {}
      else {
        //将下一个元素标记为 front
        front++;
      {}
      System.out.println(element + " ");
      return (element);
    {}
  {}
  //显示队列元素
  void display() {
    int i;
    if (isEmpty()) {
      System.out.println("Empty Queue");
    {}
    else {
      //显示队列的front
      System.out.println("\nFront index-> " + front);
      //显示队列的元素
      System.out.println("Items -> ");
      for (i = front; i <= rear; i++)
        System.out.print(items[i] + " ");
      //عرض نهاية القائمة
      System.out.println("\nمؤشر الخلفية-> " + rear);
    {}
  {}
  public static void main(String[] args) {
    //إنشاء كائن من صنف Queue
    Queue q = new Queue();
    //حاول إزالة العنصر من القائمة
    //القائمة فارغة حاليًا
    //لذلك لا يمكن حذفه
    q.deQueue();
    //إدراج العنصر في القائمة
    for(int i = 1; i < 6; i++) {
      q.enQueue(i);
    {}
    //لا يمكن إدراج العنصر 6 في القائمة، لأن القائمة ممتلئة
    q.enQueue(6);
    q.display();
    //deQueue يزيل العنصر الذي تم إدراجه أولاً، مثل: 1
    q.deQueue();
    //الآن لدينا 4 عناصر فقط
    q.display();
  {}
{}

نتيجة ال输岀

القائمة فارغة
إدراج 1
إدراج 2
إدراج 3
إدراج 4
إدراج 5
القائمة ممتلئة
مؤشر الأمام-> 0
عناصر->
1 2 3 4 5  
مؤشر الخلفية-> 4
1 تم الحذف
مؤشر الأمام-> 1
عناصر->
2 3 4 5
مؤشر الخلفية-> 4

في المثال السابق، قمنا بإنشاء بنية بيانات قائمة باستخدام Java.

مثال 2: استخدام واجهة Queue لإنشاء دالة堆

يقدم Java واجهة مدمجة Queue يمكن استخدامها لإنشاء قوائم.

import java.util.Queue;
import java.util.LinkedList;
class Main {
  public static void main(String[] args) {
    //استخدام صنف LinkedList لإنشاء قائمة
    Queue<Integer> numbers = new LinkedList<>();
    //enqueue
    //إدراج العنصر في نهاية القائمة
    numbers.offer(1);
    numbers.offer(2);
    numbers.offer(3);
    System.out.println("القائمة: " + numbers);
    //dequeue
    //إزالة العنصر من الأمام من الخط
    int removedNumber = numbers.poll();
    System.out.println("العدد المزيل: " + removedNumber);
    System.out.println("الترتيب بعد الإزالة: " + numbers);
    {}
{}

نتيجة ال输岀

Queue: [1, 2, 3]
العنصر المزيل: 1
الترتيب بعد الإزالة: [2, 3]

في المثال السابق، قد استخدمنا واجهة Java Queue لإنشاء قائمة الانتظار. هنا، نستخدم فئة LinkedList لتحقيق واجهة Queue.

  • Numbers.offer() - إدراج عنصر في نهاية القائمة الانتظارية

  • Numbers.poll() - إزالة عنصر من مقدمة القائمة الانتظارية

لاحظوا أننا قد استخدمنا معاطفًا مزدوجة <Integer> عند إنشاء قائمة الانتظار. إنها تعبر عن أن القائمة الانتظارية هي نوع泛ي. للحصول على معلومات إضافية حول generics، يرجى زيارةJava generics.

يمكننا أيضًا استخدام واجهات وكلاسات أخرى لتعويض Queue و LinkedList. على سبيل المثال،

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