هل سبق لك أن وقفت في قائمة الانتظار، فإن بنية بيانات قائمة الانتظار تفعل نفس الشيء أيضًا. أنت تقف في نهاية الطابور عندما تريد تقديم طلب ربما في مطعم الخدمة الذاتية المفضل لديك ثم تنتقل إلى أعلى قائمة الانتظار وتغادر.
تؤدي بنية بيانات قائمة الانتظار في CS نفس الوظيفة. بنية بيانات قائمة الانتظار هي بنية بيانات "الوارد أولاً يخرج أولاً". يمكن إنشاء بنية بيانات قائمة الانتظار باستخدام وظيفتين أساسيتين Enqueue وDequeue والتي تقوم بشكل أساسي بالإضافة إلى القائمة والإزالة من القائمة.
في العالم الحقيقي لعلوم الكمبيوتر، تشكل قوائم الانتظار العمود الفقري لمكونات البرامج التالية
في حين أن المكون البسيط الذي يسهل تصوره سيكون
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/
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3