navbat

DOC 15 стр. 346,5 КБ Бесплатная загрузка

Предварительный просмотр (5 стр.)

Прокрутите вниз 👇
1 / 15
6-ma'ruza navbat navbat - bu berilganlarni saqlash uchun ishlatiladigan berilganlar strukturasidir (bog'langan ro'yxatlar va steklarga o'xshash). navbatda ham xuddi stekdagi kabi berilganlarning kelish tartibi muhim ahamiyatga ega. umuman olganda, navbat - bu ketma-ketlikning boshidan boshlab, ketma-ketlikda xizmat ko'rsatishni kutayotgan odamlar yoki narsalarning navbatidir. ta'rif: navbat - bu tartiblangan ro'yxat bo'lib, unda kiritish bir uchida (dumidan) va o'chirish ikkinchi uchida (boshdan) amalga oshiriladi. birinchi kiritilgan element birinchi bo'lib o'chiriladi. navbat “birinchi kirgan birinchi chiqadi” (fifo) yoki “oxirgi kirgan oxirgi chiqadi” (lilo) tamoyiliga amal qiladi. steklardagi singari, navbatda ham bajarilishi mumkin bo'lgan ikkita jarayonga maxsus nomlar beriladi. element kiritiladigan jarayonga enqueue va element navbatdan olib tashlangan (o’chiriladigan) jarayonga dequeue deyiladi. elementni bo'sh navbatdan olib tashlashga urinish “quyi oqim” (underflow) deb ataladi va elementni to'liq navbatga qo'shishga urinish “to'lib ketish” (overflow) deb ataladi. odatda biz ularni istisno deb hisoblaymiz. misol tariqasida rasmni ko'rib chiqamiz: navbat tushunchasini supermarketda oziq-ovqat maxsulotlari uchun to’lovni amalga oshirish …
2 / 15
lganlarning abstrakt turi (bat). quyidagi keltirilgan amallar navbat bat ni yaratish uchun zarur hisoblanadi. navbatga qo'shish va olib tashlash fifo tamoyiliga amal qilishi kerak. navbatning asosiy amallari: • enqueue(t data): elementni navbat oxiriga kiritadi; • t dequeue(): navbat boshidagi elementni olib tashlaydi va uni qiymat sifatida qaytaradi. navbatning qo’shimcha amallari: • t first(): elementni navbat boshidan olib tashlamasdan qaytaradi; • t last(): elementni navbat oxiridan olib tashlamasdan qaytaradi; • bool isempty: navbat bo’sh yoki yo’qligini bildiradi. istisnolar boshqa batlarda bo'lgani kabi, dequeue-ni bo'sh navbat bilan bajarish "bo'sh navbat" istisnosini keltirib chiqaradi va enqueue-ni to'liq navbat bilan bajarish "to'liq navbat" istisnosini keltirib chiqaradi. navbatdan foydalanadigan ilovalarga misol quyida navbatlardan foydalanadigan ba'zi ilovalar keltirilgan. navbatdan to'g'ridan-to'g'ri foydalanadigan ilovalar • operatsion tizimlar kirib kelish tartibi asosida (masalan, chop etish navbati) vazifalarni (teng ustuvorlik bilan) rejalashtiradi; • haqiqiy navbatlarni simulyatsiya qilish, masalan, chiptalar kassasidagi navbatlar yoki birinchi kelganga birinchi xizmat ko'rsatiladigan boshqa stsenariylar navbatni …
3 / 15
oddiy massivlardan foydalanishimiz mumkinmi yoki yo’qmi ko’rib chiqaylik. biz bilamizki, navbatda element qo’shish bir uchidan, ularni olib tashlash boshqa uchidan amalga oshiriladi. quyidagi rasmda ko'rsatilgan misolda massivning boshlang'ich elementlari bo'sh ekanligi va massiv tez o'sib borishi aniq ko'rinib turibdi, bu esa ajratilgan massiv hajmining to'lib ketishiga olib keladi, garchi navbat uzunligi o'rtacha barqaror bo'lib qolsa ham. shunday qilib, navbat uchun oddiy massivdan foydalanib amalga oshirish samarasiz. ushbu muammoni hal qilish uchun biz siklik massivlardan foydalanamiz. bu shuni anglatadiki, biz massivning oxirgi elementi va birinchi elementini qo'shni elementlar sifatida ko'rib chiqamiz. bunday holda, agar boshida bo'sh elementlar mavjud bo'lsa, u holda oxirgi ko'rsatgich keyingi bo'sh elementga o'tadi. "queue" bat ni oddiy siklik massiv asosida amalga oshirish navbatning bunday amalga oshirilishida navbat elementlarini saqlash uchun yetarli bo'lgan ma'lum o'lchamdagi massiv ishlatiladi. elementlar massivga aylana shaklida qo'shiladi va boshlang'ich (front) va tugatish (back) elementlarini kuzatib boradigan ikkita o'zgaruvchidan foydalaniladi. odatda front (old) boshlang'ich …
4 / 15
private int back; // navbat oxiri private t[] items; // elementlarni saqlash uchun siklik massiv private int size; // massivdagi elementlar soni public arrqueue(int length = 10) { items = new t[length]; front = -1; back = -1; size = length; } // navbat bo’shmi public bool isempty { get { return front == -1; } } // navbat to’lami public bool isfull { get { return (back + 1) % size == front; } } // navbatdagi elementar soni public int count { get { return ((size - front + back + 1) % (size+1)); } } // element qo’shish public void enqueue(t item) { // agar navbat to’la bo’lsa, istisno yuzaga keltiramiz if (isfull) throw new invalidoperationexception("navbat to’la"); back = (back + 1) % size; items[back] = item; if (front == -1) front = back; } // elementni olib tashlash public t dequeue() { // agar navbat bo’sh …
5 / 15
day o‘lchamdagi navbat amallari uchun xotira va vaqt baholari quyidagilardan iborat: xotirani sarfi (n ta qo‘shish amali uchun) (( o(n) enqueue() elementni kiritish (( o(1) dequeue() navbatdan elementni olib tashlash (( o(1) count navbat hajmini olish (( o(1) first() navbatdan elementni olish (( o(1) last() navbatdan elementni olish (( o(1) isempty uchun (( o(1) isfull uchun (( o(1) cheklovlar dastlab statik massivining maksimal hajmi aniqlanishi kerak va uni o‘zgartirib bo‘lmaydi. to'liq navbatga yangi element qo'shishga urinish istisno (xato) keltirib chiqaradi. dinamik siklik massiv asosida navbat bat ni amalga oshirish. bu holda, xuddi dinamik massivli stekdagi kabi har safar navbat oxiriga element qo'shilganda, navbatning to'lib ketishi tekshiriladi. agar navbat to'la bo'lsa, massivning o'lchami ikki barobar oshiriladi va keyin yangi element qo’shiladi. dinamik siklik massiv asosida navbatni bat ni amalga oshirish dasturi: using system; using system.collections.generic; using system.text; namespace dinarrayqueue { // dinamik siklik massiv asosida navbat bat ni tasvirlovchi sinf public …

Хотите читать дальше?

Скачайте все 15 страниц бесплатно через Telegram.

Скачать полный файл

О "navbat"

6-ma'ruza navbat navbat - bu berilganlarni saqlash uchun ishlatiladigan berilganlar strukturasidir (bog'langan ro'yxatlar va steklarga o'xshash). navbatda ham xuddi stekdagi kabi berilganlarning kelish tartibi muhim ahamiyatga ega. umuman olganda, navbat - bu ketma-ketlikning boshidan boshlab, ketma-ketlikda xizmat ko'rsatishni kutayotgan odamlar yoki narsalarning navbatidir. ta'rif: navbat - bu tartiblangan ro'yxat bo'lib, unda kiritish bir uchida (dumidan) va o'chirish ikkinchi uchida (boshdan) amalga oshiriladi. birinchi kiritilgan element birinchi bo'lib o'chiriladi. navbat “birinchi kirgan birinchi chiqadi” (fifo) yoki “oxirgi kirgan oxirgi chiqadi” (lilo) tamoyiliga amal qiladi. steklardagi singari, navbatda ham bajarilishi mumkin bo'lgan ikkita jarayonga maxsus nomlar beriladi. elem...

Этот файл содержит 15 стр. в формате DOC (346,5 КБ). Чтобы скачать "navbat", нажмите кнопку Telegram слева.

Теги: navbat DOC 15 стр. Бесплатная загрузка Telegram