O’zbekiston respublikasi axborot texnologiyasi va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti samarqand filiali




Download 22,89 Kb.
bet2/2
Sana16.12.2023
Hajmi22,89 Kb.
#120167
1   2
Bog'liq
Rustamov Umid MTA

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.
Javobi:
class Navbat:
def __init__(self):
self.items = []
self.front = 0
self.back = 0

def bo_sh(self):


return self.front == self.back

def qo'shish(self, element):


if self.bo_sh():
print("Navbat to'liq. Element qo'shilmoqda.")
else:
self.items.append(element)
self.back += 1

def o'chirish(self):


if self.bo_sh():
print("Navbat bo'sh. Element o'chirilmoqda.")
else:
element = self.items[self.front]
self.front += 1
return element

def uzunlik(self):


return self.back - self.front

# Umumiy dastur


if __name__ == "__main__":
navbat = Navbat()

# Navbatga element qo'shish


navbat.qo'shish(1)
navbat.qo'shish(2)
navbat.qo'shish(3)

print("Navbatdagi elementlar:")


while not navbat.bo_sh():
print(navbat.o'chirish())

print("Navbat hozir bo'sh.")


3-masala
Navbat tuzilmasini bog‘langan ro‘yxat orqali qayta ishlashga misol:
Muammoni hal qilish uchun quyidagilarga amal qiling:
- tuzilma uchun ikkita ko'rsatgich: front va back tanlab olish, bu ko‘rsatkichlar
mos ravishda navbatning birinchi va oxirgi elementiga ishora qiladi.
- enQueue() – navbat oxiridan element qo'shadi va backni keyingi elementga
o'tkazadi.
- deQueue() – navbat boshidan elementni olib tashlaydi va frontni keyingi
elementga o'tkazadi.
Javobi:
class Navbat:
def __init__(self):
self.items = []
self.front = 0
self.back = 0

def enQueue(self, element):


self.items.append(element)
self.back += 1

def deQueue(self):


if self.front == self.back:
print("Navbat bo'sh. Elementni o'chirib bo'lmaydi.")
return None
else:
element = self.items[self.front]
self.front += 1
return element

def uzunlik(self):


return self.back - self.front

# Umumiy dastur


if __name__ == "__main__":
navbat = Navbat()

# enQueue amalini test qilish


navbat.enQueue(1)
navbat.enQueue(2)
navbat.enQueue(3)

print("Navbatdagi elementlar:")


print(navbat.items)

# deQueue amalini test qilish


olingan_element = navbat.deQueue()
if olingan_element is not None:
print(f"Olingan element: {olingan_element}")

print("Navbatdagi elementlar keyin:")


print(navbat.items)
4-masala
Navbat tuzilmasini bog‘langan ro‘yxat orqali qayta ishlashga misol:
Muammoni hal qilish uchun quyidagilarga amal qiling:
- tuzilma uchun ikkita ko'rsatgich: front va back tanlab olish, bu ko‘rsatkichlar
mos ravishda navbatning birinchi va oxirgi elementiga ishora qiladi.
- enQueue() – navbat oxiridan element qo'shadi va backni keyingi elementga
o'tkazadi.
- deQueue() – navbat boshidan elementni olib tashlaydi va frontni keyingi
elementga o'tkazadi.
Javobi:
class Navbat:
def __init__(self):
self.items = []
self.front = 0
self.back = 0

def enQueue(self, element):


self.items.append(element)
self.back += 1

def deQueue(self):


if self.front == self.back:
print("Navbat bo'sh. Elementni o'chirib bo'lmaydi.")
return None
else:
element = self.items[self.front]
self.front += 1
return element

def uzunlik(self):


return self.back - self.front

# Umumiy dastur


if __name__ == "__main__":
navbat = Navbat()

# enQueue amalini test qilish


navbat.enQueue(1)
navbat.enQueue(2)
navbat.enQueue(3)

print("Navbatdagi elementlar:")


print(navbat.items)

# deQueue amalini test qilish


olingan_element = navbat.deQueue()
if olingan_element is not None:
print(f"Olingan element: {olingan_element}")

print("Navbatdagi elementlar keyin:")


print(navbat.items)
Download 22,89 Kb.
1   2




Download 22,89 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



O’zbekiston respublikasi axborot texnologiyasi va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti samarqand filiali

Download 22,89 Kb.