4.6 rasm.
abstract stek (a), stekni vektorda amalga oshirilishi (b) va stekni
bog’langan ro’yxatda amalga oshirilishi(c)
uchun
amallar ketma – ketligi.
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 4.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.
4.7 rasm.
Navbatda bajariluvchi amallar ketma – ketligi
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:
Dostları ilə paylaş: