• Asosiy vazifangiz
  • Vaqt murakkabligi
  • Ma’lumotlar tuzilmasi va algoritmlar” fanidan 2-mustaqil ishi tuzuvchi: Qo’ziboyev Xasanboy




    Download 356,54 Kb.
    bet2/4
    Sana16.12.2023
    Hajmi356,54 Kb.
    #120363
    1   2   3   4
    Bog'liq
    Xasanboy MT Maruza

    2-MASALA
    2-masala. Navbatni massiv yordamida tadbiq qilish. Navbat (queue)ni tadbiq qilish uchun navbat boshi (front) va navbat oxiri (back) uchun ikkita indeksni aniqlab olishimiz kerak. Navbatga elementni oxiridan qo’shamiz, elementni navbat boshidan o’chiramiz.
    Navbatga element qo’shish algoritmi:
    1) Navbatda element bor yoki yo’qligini (to’liqlikka) tekshirish;
    2) Agar navbat to’la bo’lsa, to’liq ekanligini chiqarish va ishni yakunlash;
    3) Agar to’liq bo’lmasa, back ni bir birlikka oshirib, elementni qo’shish
    Navbatdan elementni o’chirish algoritmi:
    1) Navbatni bo’sh yoki bo’ emaslikka tekshirish;
    2) Agar bo’sh bo’lsa, navbat bo’sh ekanligin chiqarish va ishni yakunlash;
    3) Agar bo’sh bo’lmasa, front dan elementni olish va uni bittaga oshirish.
    Quyida berilgan navbat klasslari uchun ikkita metodni yozing va dasturdan ishga tushiring. Birinchi metod x elementni navbatga qo’shish, ikkinchi metod navbatdan elementni o’chirish.
    Masalan:

    Asosiy vazifangiz:
    Berilgan namunadagi ikkita funksiyalar enqueue() va dequeue() prototiplari asosida o’zingiz kod yozing. Birinchi funksiya bitta parametr, ya’ni qo’shiladigan elementni qabul qilsin, ikkinchi funksiya esa parametrsiz bo’lib, butun son qaytaradi. Agar navbat bo’sh bo’lsa, -1 qiymatini qaytarsin.
    Vaqt murakkabligi: O(1) - enqueue() va dequeue() uchun.
    Qo’shimcha xotira murakkabligi: O(1) - enqueue() va dequeue() uchun.
    Cheklovlar:
    1 ≤ Q ≤ 105
    1 ≤ x ≤ 105

    Masalaning javobi:
    class Queue:
    def __init__(self, capacity):
    self.front = 0
    self.size = 0
    self.back = capacity - 1
    self.Q = [None] * capacity
    self.capacity = capacity

    def isFull(self):


    return self.size == self.capacity

    def isEmpty(self):


    return self.size == 0
    #meing kodim
    def EnQueue(self, item):
    if self.isFull():
    print("Navbat to'la. Element qo'shilmadi.")
    return -1
    else:
    self.back = (self.back + 1) % self.capacity
    self.Q[self.back] = item
    self.size += 1
    #mening kodim
    def DeQueue(self):
    if self.isEmpty():
    print("Navbat bo'sh. Element o'chirilmadi.")
    return -1
    else:
    ochish_elem = self.Q[self.front]
    self.front = (self.front + 1) % self.capacity
    self.size -= 1
    return ochish_elem

    # Umumiy dastur


    if __name__ == "__main__":
    my_queue = Queue(5)

    my_queue.EnQueue(10)


    my_queue.EnQueue(20)
    my_queue.EnQueue(30)

    dequeued_item = my_queue.DeQueue()


    print(f"O'chirilgan element: {dequeued_item}")

    my_queue.EnQueue(40)


    my_queue.EnQueue(50)

    is_empty = my_queue.isEmpty()


    print(f"Navbat bo'shmi? {is_empty}")


    Download 356,54 Kb.
    1   2   3   4




    Download 356,54 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Ma’lumotlar tuzilmasi va algoritmlar” fanidan 2-mustaqil ishi tuzuvchi: Qo’ziboyev Xasanboy

    Download 356,54 Kb.