Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash - bet 34

|
Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash
|
bet | 34/143 | Sana | 20.07.2024 | Hajmi | 0,81 Mb. | | #268096 |
Bog'liq Tiplarni dinamik tarzda-fayllar.org
4.4-dastur. Output.
|
b a h o q
| q
| o
| h
| a
| b
Element oʻchirish
|
| o
| h
| a
| b
Nusxalash konstruktori!
| o
| h
| a
| b
2 tartibdagi element: h
|
4.4-dasturda Bir stack obʻyektini yaratilgan, stack hajmi 5ga teng va stack ko‘pi o‘z ichiga olishi mumkin bo‘lgan elementlar soni 5 ga teng. stackni while takrorlanish operatori bilan to‘ldiriladi. Ekranda stack elementlarini chiqariladi, keyin stackdan bir elementi o‘chiriladi va yana ekranda stack elementlarini chiqariladi. Natija asosida u o‘zgardi, aniq bir element o‘chirildi.
Shuningdek, dasturda nusxa konstruktor ishlatiladi. Peek() funksiyasi stackning ikkinchi elementini qaytardi.
Stack shablon sinf yaxshi yaratildi va to‘g‘ri ishlamoqda. uni, masalan, int maʻlumotlar turida sinab ko‘rcangiz bo‘ladi. Ishonchim komilki, hamma narsa to‘g‘ri ishlaydi.
Navbat (queue). Navbat maʻlumotlar tuzilmasi bo‘lib (yuqorida aytib o‘tilganidek) bu LILO tamoyilini qo‘llab quvvatlaydi (last in-last out: oxirgi kirgan oxirgi chiqadi). C++ allaqachon tayyor STL konteyner-navbat (queue) mavjud.
Navbatda, birinchi elment kiritilgan bo‘lsa, u ham birinchi chiqariladi. 4 ta elementni qo‘shsangiz, birinchi qo‘shilgan element birinchi, ikkinchi qo‘shilgan element ikkinchi chiqadi.
Navbat qanday ishlashini tushunish uchun do‘kon navbatini tasavvur qilishingiz mumkin. Siz esa uning o‘rtasida turibsiz, shunda kassaning oldida turibsiz, avval oldingizdagi barcha odamlarga xizmat qilinishi. Lekin oxirgi navbatda o‘tgan kishi uchun, o‘zi tashqari barcha odamlarga xizmat qilish kerak emas.
Bu yuqorida keltirilgan ro‘yxatga qarang. Bulardan birortasini chiqarish uchun shu ketma-ketlik asosida chiqarib, keraklisiga to‘xtaladi. Masalan, 0 sonnini chiqarish, uchun avvl 3 ta son chiqariladi so‘ng kerakli son.
Stack shablon sinfida bir peek() (bu indeks bo‘yicha elementni qaytaradi), bu navbat shablonida muayyan elementni ko‘rish mumkin emas.
Agar barcha navbat elementlarga kirish kerak bo‘lsa, lekin, navbatda buni amalga oshirish mumkin. Keyinroq bu qanday amalga oshirishni ko‘rsatib o‘tamiz.
C++da navbat yaratish. Agar C++ da navbat shablonini ishlatmoqchi bo‘lsangiz, avval kutubxonasini ulashingiz kerak.
Keyin navbatni eʻlon qilish uchun quyidagi sintaktikni ishlatishingiz kerak:
Birinchi queue so‘zini yozishimiz kerak.
Type ga navbatni to‘ldirish uchun kerakli tipni ko‘rsatishimiz lozim. Navbat obʻyektining nomini ko‘rsatishamiz kerak.
Masalan,
Navbat usullari va funksiyalari:
Navbatda funksiya bu bir xil funksiyadir, lekin u faqat STL konteynerlari bilan ishlaydi. Bu funksiyalarga push(), pop(), front(), back(), empty() funksiyalar kiradi.
push() – navbatga yangi element qo‘shish.
pop() – navbatdan birinchi elementni o‘chirish, ikkinchi element birinchi element o‘rniga suriladi.
front() – navbatdagi birinchi elemeniga murojaat back() - navbatdagi birinchi elemeniga murojaat
empty() – navbat bo‘sh yoki bo‘shmasligini tekshiradi. Agar bo‘sh bo‘lsa true, aks holda false qiymat qaytaradi.
Bu keltirilgan funksiyalarga doir 4.5-dasturini keltiramiz.
4.5-dastur. Navbat funksiyalaridan foydalanish.
// Created by MBBahodir #include "stdafx.h" #include #include
using namespace std;
int main() { queue q;
for (int h = 0; h < 7; h++) { q.push(rand()%100);
}
cout << "Navbatdigi birinchi element " << q.front() << endl; cout << "Navbatdigi oxirgi element " << q.back() << endl; q.pop();
cout << "Navbatdigi birinchi element (oʻchirishdan soʻng): " << q.front() << endl; cout << "Navbat boʻsh " << (q.empty()?"":"emas") << endl;
system("pause"); return 0;
}
|
4.5-dastur.Output.
|
Navbatdigi birinchi element 41 Navbatdigi oxirgi element 78
Navbatdigi birinchi element (oʻchirishdan soʻng): 67
Navbat boʻsh emas
|
|
| |