9-Amaliy mashg’ulot. Stekning tuzilishi. Massiv va ro’yxatlar bilan stackni tuzish. Navbat. Navbatdagi asosiy operatsiyalar


Download 1.32 Mb.
Sana23.12.2022
Hajmi1.32 Mb.
#1044782
Bog'liq
9-amaliy mashg\'ulot (1)

9-Amaliy mashg’ulot. Stekning tuzilishi. Massiv va ro’yxatlar bilan stackni tuzish. Navbat. Navbatdagi asosiy operatsiyalar.


Stakning barcha elementlari bir xil bo'lganligi sababli, C yoki C ++ dagi Arrays yordamida stekni amalga oshirish juda oson. Stakning birinchi elementini birinchi qator uyasiga, stackning ikkinchi elementini ikkinchi qator uyasiga va hokazolarni qo'yish mumkin. Stekning yuqori qismi bu stekka qo'shilgan so'nggi elementning indeksidir. Stekni amalga oshirishda stack elementlari massivda saqlanadi.
STACK bu ma'lumotlar strukturasi bo'lib, unda elementlarga faqat bitta uchida, ya'ni Last In First Out ma'lumotlar tuzilmasida kirish mumkin (ochilgan yoki itarilgan). Shunday qilib, stack elementiga faqat tepadan kirish mumkin, pastki yoki o'rtadan emas.
Navbat - bu birinchi bo'lib chiqadigan (FIFO) tartibda ishlaydigan konteyner adapterlarining turi. Elementlar orqa tomonga (uchiga) kiritiladi va old tomondan o'chiriladi.
Navbat – bu elementlarning tartiblangan to’plami bo’lib, bunda elementlarni qo’shish bir tomondan – tuzilma oxiridan (bu navbat oxiri deb ataladi), elementlarni o’chirish esa, tuzilmaning ikkinchi oxiri – navbat boshi deb ataluvchi tomonidan ruxsat beriladi.
Navbatning barchamizga tanish bo’lgan modeli – bu do’kondagi xaridorlar tomonidan hosil qilingan navbat hisoblanadi. Navbat FIFO (First In - First Out) – birinchi kelgan birinchi ketadi turidagi tuzilma sifatida qaraladi. Rasmda 3 ta elementdan tashkil topgan navbat tuzilmasiga misol keltirilgan.
Navbat tuzilmasi ommaviy xizmat ko’rsatish masalalarini modellashtirishda ham qo’llaniladi (masalan, banklarda mijozlarga xizmat ko’rsatish).
Navbatni massiv yordamida tadbiq qilish. Agarda navbatning maksimal o’lchami oldindan ma’lum bo’lsa, dasturda uni massiv ko’rinishida tadbiq qilish mumkin. Bitta tuzilmada massivning o’zini va uning o’lchamini birlashtirish juda qulay.
Stek bir tomondan “yopiq” (harakatlanmaydigan) bo’lsa, navbat ikki tomonlama “harakatlanuvchi” hisoblanadi. Shuning uchun ham navbatda ikkita o’zgaruvchi qo’llaniladi, bular navbat boshi head va navbat oxiri tail. Bu o’zgaruvchilarning birinchisi navbatning birinchi elementini, ikkinchisi esa navbatning oxirgi elementining tartib raqamini bildiradi. Agar bu o’zgaruvchilar teng bo’lsa, navbatda bor-yo’g’i bitta element mavjud bo’ladi. Massiv halqasimon shaklda biriktiriladi, lekin bunda massiv boshida bo’sh joylar mavjud bo’ladi. Yangi element rasmda ko’rsatilganidek navbat boshidan qo’shiladi.
C++ dasturlash tilida navbatni queue orqali amalga oshiramiz.
Navbat tomonidan qo'llab-quvvatlanadigan funktsiyalar:
  • empty () - navbatning bo'sh yoki yo'qligini qaytaradi.
  • size () - navbatning hajmini qaytaradi.
  • swap () C ++ STL-da: Ikkala navbatning tarkibini almashtiring, lekin navbati bir xil bo'lishi kerak, ammo o'lchamlari farq qilishi mumkin.
  • emplace () da C ++ STL: Navbat konteyneriga yangi element kiriting, yangi element navbat oxiriga qo'shiladi.
  • front () funktsiyasidagi front () va back () navbatning birinchi elementiga havolani qaytaradi.
  • push (g) funktsiyasi navbat oxiriga «g» elementini qo'shadi. pop () funktsiyasi navbatning birinchi elementini o'chiradi.

Navbat tomonidan qo'llab-quvvatlanadigan funktsiyalar:
  • empty () - navbatning bo'sh yoki yo'qligini qaytaradi.
  • size () - navbatning hajmini qaytaradi.
  • swap () C ++ STL-da: Ikkala navbatning tarkibini almashtiring, lekin navbati bir xil bo'lishi kerak, ammo o'lchamlari farq qilishi mumkin.
  • emplace () da C ++ STL: Navbat konteyneriga yangi element kiriting, yangi element navbat oxiriga qo'shiladi.
  • front () funktsiyasidagi front () va back () navbatning birinchi elementiga havolani qaytaradi.
  • push (g) funktsiyasi navbat oxiriga «g» elementini qo'shadi. pop () funktsiyasi navbatning birinchi elementini o'chiradi.

#include
#include
using namespace std;
int main()
{ queue q1;
q1.push(90);
q1.push(99);
cout<<"Hajmi: "<for(int i=0; i<=q1.size(); i++) {cout<cout<<"\nBo'shligi:”<endl;
return 0;
}

Download 1.32 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling