English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المثال، سنتعلم كيفية تحقيق بنية البيانات للصف باستخدام 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.
يقدم 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. على سبيل المثال،