• Dek tuzilmasi. Asosiy operatsiyalar. Ishdan maqsad.
  • Dasturiy injiniringi




    Download 90,53 Kb.
    Pdf ko'rish
    Sana19.01.2024
    Hajmi90,53 Kb.
    #141224
    Bog'liq
    10 Mavzu



    Muhammad Al-Xorazmiy nomidagi
    Toshkent Axborot Texnologiyalar Universiteti
    Farg‘ona filiali
    “Dasturiy injiniringi” 850-22 guruh talabasi
    Sodiqov Kamroning ning 
    Ma'lumotlar tuzilmasi va
    algoritmlar fanidan
    AMALIY MASHG’ULOT-10
    Mavzu: Navbat tuzilmasi. Ro’yxatlar yordamida navbatni amalga oshirish.
    Dek tuzilmasi. Asosiy operatsiyalar.
    Ishdan maqsad. Ushbu laboratoriya ishida talabalar ro’yxatlar yordamida
    navbatni amalga oshirishni, talabalarSTL komponentlaridan biri bo’lgan
    dek(deque) bilanishlashni o’rganishlari kerak. 
    Qo’yilgan masala. Talabalar topshiriq variantiga mos ravishda ro’xatlar ustida
    berilgan funksiyalar bilan ishlash ko’nikmasiga ega bo’lishlari kerak.
    Ish tartibi:

    Tajriba ishi nazariy ma’lumotlarini o‘rganish;

    Berilgan topshiriqning algoritmini ishlab chiqish;

    C++ dasturlash muhitida dasturni yaratish;

    Natijalarni tekshirish;

    Hisobotni tayyorlash va topshirish.
    Dek – bu ikki tomonlama navbat hisoblanadi. Ya’ni (Double ended queues)
    Ikkala uchli navbat - bu ikkala uchida kengayish va qisqarish xususiyatiga ega
    bo'lgan ketma-ket konteynerlar.
    Ular vektorlarga o'xshash, ammo elementlarni kiritish va yo'q qilishda samaraliroq.
    Vektorlardan farqli o'laroq, tutashgan joy ajratilishini kafolatlash mumkin emas.
    Dek, asosan ma'lumotlar tuzilmasining ikki tomonlama navbatini amalga
    oshirishdir. Navbatdagi ma'lumotlar tuzilishi faqat oxiriga qo'shib, old tomondan


    o'chirishga imkon beradi. Bu haqiqiy hayotdagi navbatga o'xshaydi, unda odamlar
    old tomondan olib tashlanadi va orqada qo'shiladi. Ikkala tugagan navbat - bu
    qo'shilish va o'chirish operatsiyalari ikkala uchida ham mumkin bo'lgan
    navbatlarning alohida holati.
    Dek uchun funktsiyalar vektor bilan bir xil, oldinga va orqaga surish va pop
    operatsiyalari qo'shiladi.
    Amaliy mashg’ulot topshirig’i:
    Nazorat savollar

    Navbat tuzilmasi qanday strukturaga ega?

    Bog’langan ro’yxatda navbatni amalga oshirishni qanday kodlar
    orqali amalga oshirish mumkin?

    Dek ya’ni(Double ended queues) nima va uning boshqa
    konteynerlaridan farqi nima?

    Dek uchun qaysi funksiyalar bilan bir xil, oldinga va orqaga
    surish va pop operatsiyalari qo'shiladi.

    Deklarning vektorlar bilan asosiy farqi nimada?
    1. **Navbat Tuzilmasi:**
    Navbat (queue) tuzilmasi, bitta to'plamning oxiridan (eng oxirgi
    elementdan) kirib olinuvchi elementlar ro'yxatidir. Bu tuzilma FIFO (First-
    In-First-Out) prinsipi asosida ishlaydi. Eng birinchi element ro'yxatga
    qo'shiladi, eng oxirgi element esa ro'yxatdan olib tashlanadi. C++-da bu
    tuzilma standart `queue` klassi orqali yaratiladi.
    2. **Bog’langan Ro’yxatda Navbatni Amalga Oshirish:**
    C++-da `queue` klassi orqali bog'langan ro'yxatda navbatni amalga
    oshirish uchun quyidagi kodi ishlatish mumkin:
    ```cpp
    #include
    #include
    int main() {
    std::queue myQueue;
    // Navbatga element qo'shish
    myQueue.push(10);
    myQueue.push(20);
    myQueue.push(30);
    // Element olish va chiqarish
    while (!myQueue.empty()) {


    std::cout << "Element: " << myQueue.front() << std::endl;
    myQueue.pop();
    }
    return 0;
    }
    ```
    3. **Dek (Double Ended Queue):**
    Dek, iki tomonlama amalga oshirilishi mumkin bo'lgan ro'yxatdir. C++-da
    `deque` klassi bilan ifodalangan. Dekning asosiy xususiyati, bosh va
    ohiridan element qo'shish va olishish imkoniyatiga ega bo'lganligidir.
    4. **Dek uchun bir xil, oldinga va orqaga surish va pop operatsiyalari:**
    Dek (`deque`) uchun hamda `queue` uchun bir xil operatsiyalar bilan bir
    xil, oldinga va orqaga surish va pop operatsiyalari amalga oshiriladi. Bu
    funksiyalar `push_front()`, `push_back()`, `pop_front()` va `pop_back()`
    metodlaridir.
    ```cpp
    #include
    #include
    int main() {
    std::deque myDeque;
    // Oldinga va orqaga element qo'shish
    myDeque.push_front(10);
    myDeque.push_back(20);
    myDeque.push_front(30);
    // Elementlarni chiqarish
    while (!myDeque.empty()) {
    std::cout << "Element: " << myDeque.front() << std::endl;
    myDeque.pop_front();
    }
    return 0;
    }
    ```
    5. **Deklarning Vektorlar Bilan Asosiy Farqi:**
    Dek (`deque`) va vektor (`vector`) ham ikkala konteynerlar C++-dagi
    to'plamlardir. Ular orasidagi farq esa boshqa. Vektor faqatgina o'z ichidagi
    hajmini dinamik ravishda o'zgartiradi, lekin dek bosh va oxiridan
    elementlarni qo'shish va olishish uchun o'zgaruvchilarga ega bo'lgan


    ro'yxatdir. Dek esa bosh va oxiridan elementlarni tezroq qo'shish va olishish
    imkoniyatiga ega bo'lgan ro'yxatdir.

    Download 90,53 Kb.




    Download 90,53 Kb.
    Pdf ko'rish