Navbatlar. Navbat bu shunday tuzilmaki, u elementlar qo’shilishi bilan kengayib boradi va elementlarni faqatgina bir tomondan qabul qiladi. Stekdan farqli holda, navbat tuzilmasi har ikkala tomondan ham ochiq hisoblanadi, lekin element kiritish bir tomondan, chiqarish esa ikkinchi tomonidan amalga oshiriladi. Navbat FIFO(first in first out – birinchi kelgan birinchi ketadi) ko’rinishidagi tuzilmadir. Navbatda ham xuddi stekdagi kabi C++ da alohida kutubxona mavjud.
#include Navbatni dasturda e’lon qilish quyidagicha:
Queue nav1; Navbat ustida quyidagi amallar bajariladi:
Clear() - navbatni tozalash.
isEmpty() – navbatni bo’shlikka tekshirish
enqueue(el)—el elementni navbatga joylashtirish
dequeue() —navbatdan birinchi elementni olish
firstEl() — navbatning birinchi elementini uni o’chirmasdan qaytaradi
Navbatda bajariladigan enqueue va dequeue amallari 2.7-rasmda keltirilgan. Steklardan farqli ravishda navbatlarda o’zgarishlar uning oxirida va boshida bo’lishi nazorat qilinishi lozim. Elementlar navbatga oxiridan joylashtiriladi, olish esa boshidan amalga oshiriladi.
2.7-rasm. Navbatda bajariluvchi amallar ketma – ketligi
2.8-rasm. Navbatni massivda amalga oshirilish dasturi.
2.9-rasm. Navbatni bog’langan ro’yxatda amalga oshirilish dasturi
2.10 – rasmda navbatda element qo’shish va o’chirish amallari ketma –ketligi 2.7–rasmdagiga o’xshash ravishda ko’rsatilgan bo’lib, 2.10b da navbatni o’zgarishi massiv ko’rinishida, 2.10c da bog’langan ro’yxat ko’rinishida amalga oshirilgan.
2.10 – rasm. Navbat ustida amallar bajarish.
DEK (DEQ - Double Ended Queue).Dek so‘zi (DEQ - Double Ended Queue) ingliz tilidan olingan bo‘lib 2 ta chetga ega navbat degan ma’noni bildiradi. Dekning o’ziga xos xususiyati shundan iboratki, elementlarni yozish va o’qishni har ikkala chetidan ham amalga oshirish mumkin.
Dekni quyi chegaralari birlashtirilgan ikkita stek ko’rinishda qarash mumkin. Deklar bilan ishlash uchun ham C++ da alohida kutubxona mavjud: