Növbə (proqramlaşdırma)

Növbə () — proqramlaşdırmada verilənlər strukturudur və məlumatların müəyyən qaydada saxlanması və işlənməsi üçün istifadə olunur. Növbə, FIFO () prinsipi əsasında işləyir, yəni ilk daxil olan element ilk çıxır. Bu struktur adətən, məlumatların ardıcıl emalı tələb olunduğu hallarda istifadə olunur, məsələn, işlərin, proseslərin və ya sorğuların sıralanması üçün.
300px|right

 Növbə əməliyyatları 
 enqueue — yeni elementin növbəyə əlavə olunması. Bu əməliyyat zamanı element sıranın sonunda yerləşdirilir.
 dequeue — növbədəki ilk elementin çıxarılması. Bu əməliyyat zamanı ilk daxil olan element növbədən çıxarılır.
 front (və ya peek) – Növbənin ilk elementinə baxmaq (çıxarmadan).
 isEmpty — növbənin boş olub-olmadığını yoxlayır.
 isFull — (Statik növbələr üçün) növbənin tam dolu olub-olmadığını yoxlayır.

 İstifadə sahələri 
 Proseslərin idarə olunması — məsələn, əməliyyat sistemlərində proseslərin ardıcıl işlənməsi üçün.
 Verilənlərin stream emalı — real vaxt verilənlərin emalı və ya emalı gözləyən sorğuların idarə olunması.
 İnternet serverlərində sorğu idarəsi — gələn sorğuların düzgün ardıcıllıqla idarə olunması və cavablandırılması.

 Növləri 
 Sadə növbə — ənənəvi FIFO prinsipi ilə işləyir.
 Dairəvi növbə — boş yerin yenidən istifadəsi üçün dairəvi struktura malikdir.
 Prioritetli növbə — elementlər müəyyən prioritetə görə növbəyə əlavə edilir.
 İkili sonlu növbə (deque) — həm başlanğıcda, həm də sonunda əməliyyatların icra oluna biləcəyi növbədir.

 Növbənin həyata keçirilməsi yolları 
 Massiv 
600px|left
Tipik olaraq, start növbənin başına, end isə növbəyə yeni element daxil olduqda doldurulacaq elementə işarə edir. Növbəyə element əlavə edərkən yeni növbə elementinə q[end] yazılır və sonu bir azaldılır. Əgər end-in dəyəri 1-dən kiçik olarsa, o zaman bir növ massivdən keçirilir və dəyişənin qiyməti n-ə bərabər olur. Elementin növbədən çıxarılması da eyni şəkildə həyata keçirilir: q[start] elementi növbədən çıxarıldıqdan sonra start dəyişəni 1 azalır. Belə alqoritmlərlə n-dən bir xana həmişə boş qalacaq (növbədən bəri n elementi boş elementdən ayırmaq mümkün deyil), bu, alqoritmlərin sadəliyi ilə kompensasiya olunur.

 İstinadlar 

Ədəbiyyat
Donald Knuth. The Art of Computer Programming, Volume 1: Fundamental Algorithms, Third Edition. Addison-Wesley, 1997. . Section 2.2.1: Stacks, Queues, and Dequeues, pp. 238–243.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. . Section 10.1: Stacks and queues, pp. 200–204.
William Ford, William Topp. Data Structures with C++ and STL, Second Edition. Prentice Hall, 2002. . Chapter 8: Queues and Priority Queues, pp. 386–390.
Adam Drozdek. Data Structures and Algorithms in C++, Third Edition. Thomson Course Technology, 2005. . Chapter 4: Stacks and Queues, pp. 137–169.

 Xarici keçidlər 

STL Quick Reference
VBScript implementation of stack, queue, deque, and Red-Black Tree

Kateqoriya:Verilənlər strukturları