"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > إعادة تعلم أساسيات CS - تنفيذ قائمة الانتظار

إعادة تعلم أساسيات CS - تنفيذ قائمة الانتظار

تم النشر بتاريخ 2024-11-09
تصفح:375

Relearning basics of CS - Implementing Queue

هل سبق لك أن وقفت في قائمة الانتظار، فإن بنية بيانات قائمة الانتظار تفعل نفس الشيء أيضًا. أنت تقف في نهاية الطابور عندما تريد تقديم طلب ربما في مطعم الخدمة الذاتية المفضل لديك ثم تنتقل إلى أعلى قائمة الانتظار وتغادر.

تؤدي بنية بيانات قائمة الانتظار في CS نفس الوظيفة. بنية بيانات قائمة الانتظار هي بنية بيانات "الوارد أولاً يخرج أولاً". يمكن إنشاء بنية بيانات قائمة الانتظار باستخدام وظيفتين أساسيتين Enqueue وDequeue والتي تقوم بشكل أساسي بالإضافة إلى القائمة والإزالة من القائمة.

أمثلة من الحياة الحقيقية

في العالم الحقيقي لعلوم الكمبيوتر، تشكل قوائم الانتظار العمود الفقري لمكونات البرامج التالية

  • جدولة المهام
  • التعامل مع الأحداث
  • الاتصال غير المتزامن وما إلى ذلك

في حين أن المكون البسيط الذي يسهل تصوره سيكون

  1. قائمة انتظار في قائمة التشغيل للأغاني
  2. قائمة انتظار بترتيب البيانات التي يتم إرسالها عبر الشبكة وما إلى ذلك

تطبيق

package main

import (
    "fmt"
    "errors"
)

type Queue struct{
    Elements []int
    Size int
}

func (q *Queue) Enqueue(value int){
    if q.GetLength() == q.Size { 
        fmt.Println("Overflow") 
        return
    } 
    q.Elements = append(q.Elements, value) 
}

func (q *Queue) Dequeue() int {
    if q.IsEmpty() { 
        fmt.Println("UnderFlow") 
        return 0
    } 
    element := q.Elements[0] 
    if q.GetLength() == 1 { 
        q.Elements = nil 
        return element 
    } 
    q.Elements = q.Elements[1:] 
    return element
}

func (q *Queue) GetLength() int { 
    return len(q.Elements) 
} 

func (q *Queue) IsEmpty() bool { 
    return len(q.Elements) == 0
} 

func (q *Queue) Peek() (int, error) { 
    if q.IsEmpty() { 
        return 0, errors.New("empty queue") 
    } 
    return q.Elements[0], nil 
} 

تعقيد

تعقيد الوقت - O(1) لقائمة الانتظار وإلغاء قائمة الانتظار
تعقيد المساحة - O(1) لـ Enqueue وDequeue

مراجع

المرجع - https://www.geeksforgeeks.org/queue-in-go-language/

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/abinav_athreya_f4b5487056/relearning-basics-of-cs-implementing-queue-54g7?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3