• Masalaning qo‘yilishi
  • Kutilayotgan vaqt murakkabligi
  • Ma’lumotlar tuzilmasi va algoritmlar” fanidan 2-mustaqil ishi tuzuvchi: Qo’ziboyev Xasanboy




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

    Natija:


    4-MASALA
    4-masala. Stek tuzilmasini bog‘langan ro‘yxat orqali qayta ishlashga misol:

    Ushbu tasvirda berilgan amallarni bajarish uchun bir bog'langan ro'yxat berilgan deb hisoblang. Ushbu bog'langan ro'yxat yordamida stek tuzilmasini hosil qilish talab etilgan. Buning uchun quyidagi jadvalda berilgan dastur kodiga
    to’ldirishlar kiritish kerak bo’ladi. Ya’ni, stek klassidagi push() va pop() funksiyalari uchun kod yozing.
    Masalan:

    Masalaning qo‘yilishi:
    Push() va pop() ikkita metodni ishlab chiqing. Push() metodi bitta argumentni oladi, ya'ni stekga qo’shiladigan "x" butun son va pop() metodi argumentsiz bo’lib,
    stekning top elementi - butun sonni qaytaradi. Agar stek bo'sh bo'lsa, pop() metodi -1 ni qaytaradi.
    Kutilayotgan vaqt murakkabligi: push() va pop() uchun O(1).
    Kutilayotgan yordamchi xotira: push() va pop() uchun O(1).
    Cheklovlar:
    1 ≤ Q ≤ 100
    1 ≤ x ≤ 100

    Masalaning javobi:
    class StackNode:
    def __init__(self, data):
    self.data = data
    self.next = None

    class MyStack:


    def __init__(self):
    self.top = None
    #mening kodim
    def push(self, data):
    qosh_elem = StackNode(data)
    qosh_elem.next = self.top
    self.top = qosh_elem
    #mening kodim
    def pop(self):
    if self.isEmpty():
    return -1
    ochgan_elem = self.top.data
    self.top = self.top.next
    return ochgan_elem

    def isEmpty(self):


    return self.top is None

    # Asosiy dastur


    t = int(input("So'rovnoma soni: "))
    for _ in range(t):
    s = MyStack()
    q = int(input("So'rovlar soni: "))
    q1 = list(map(int, input("So'rovlarni kiriting: ").split()))

    i = 0
    while i < len(q1):


    if q1[i] == 1:
    s.push(q1[i + 1])
    i += 2
    elif q1[i] == 2:
    popped_item = s.pop()
    if popped_item != -1:
    print(popped_item, end=" ")
    else:
    print(-1)
    i += 1
    elif s.isEmpty():
    print(-1)
    print()
    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.