O‘ZBEKISTON XALQARO ISLOM AKADEMIYASI
ISLOM IQTISODIYOTI VA XALQARO MUNOSABATLAR FAKULTETI
AXBOROT XAVFSIZLIGINI BOSHQARISH MUTAXASSISLIGI
“Algoritmlarni loyihalashtirish va tahlil qilish” fanidan
Amaliy mashg‘ulot
Mavzu: Array va bog’langan list
Bajardi: Xushvaqtov Oybek
Qabul qiluvchi: PhD D.S.Tuxtanazarov
Toshkent-2022
10 - Amaliy mashg‘ulot
Mavzu: Array va bog’langan list (Linedlist)
1. Masalaning berilishi.
Linkid list yaratish va unga element qo’shish
2. Masalaning yechilishi.
LinkedList massiv kabi chiziqli ma'lumotlar strukturasi(MS) bo'lib, lekin undagi elementlarning to'liq-kesiq o'rni (indeks) mavjud emas. Elementlar o'zara ko'rsatkich(yo'llanma) yoki "link"lar bilan bo'glanadi.
So'zni Linkedlist tashkil etuvchisi sodda MS "node"dan boshlaymiz. O'zbekchasiga xalqa deb olishimiz mumkin. (Aslida, terminlarni to'g'ridan to'g'ri o'zbekchaga tarjima qilish tarafdori emasman.) Quyidagi rasmda xalqa ifodalangan.
Ushbu MS ko'plab boshqa katta MS lar uchun qurilishi materiali vazifasini bajarib beradi. Rasmda ko'rinib turganidek, xalqa o'zida qandaydur obyektni va keyingi xalqaga yo'llanmani saqlaydi. Quyidagi kod parchasida node ifodalangan.
class Node:
def __init__(self,data):
self.data = data
self.next = None
Xalqada saqlanayotgan elementlarning tipi har doim bir bo'lishi lozim. Bir necha xalqalarni birlashtirgan holda zanjirni hosil qilamiz. Demak, zanjir bu bir dan ortiq xalqalarning to'plami bo'lib, ular o'zaro faqat birgina link bilan bog'lanadi(Keyingi maqolalarimizda bog'lanishlar soni birdan ortiq bo'lgan holatni ham e'tiborga olib o'tamiz.). Quyidagi rasmda zanjirga misol keltirilgan.
Zanjirning birinchi elementi Bosh va oxirgi elementi mos ravishda Dum deb ataladi. Zanjirning har bir xalqasi o'zidan keyingi xalqaga link yordamida bo'glangan. [A,B,C,D,E] bular xalqalarda saqlanayotgan obyektlardir. Bu zanjir LinkedList bo'lishi uchun bir necha qo'chimcha metodlarni qo'shishimiz lozim.
class Node:
def __init__(self,data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def printList(self):
temp = self.head
while temp:
print(temp.data)
temp = temp.next
def push(self,new_data):
new_node = Node(new_data)
new_node.next = self.head
self.head = new_node
def insertAfter(self,prev_node, new_data):
if prev_node is None:
print("Tugun mavjud emas")
return
new_node = Node(new_data)
new_node.next = prev_node.next
prev_node.next = new_node
def append(self, new_data):
new_node = Node(new_data)
if self.head is None:
self.head = new_node
return
last = self.head
while last.next:
last = last.next
last.next = new_node
from code import LinkedList, Node
## Linked List yaratamiz
llist = LinkedList()
## Uchta node (tugun) yaratamiz
llist.head = Node('Dushanba')
tuesday = Node('Seshanba')
wednesday = Node('Chorshanba')
## Tugunlarni bog'laymiz
llist.head.next = tuesday
tuesday.next = wednesday
## List boshiga yangi tugun qo'shamiz
llist.push('Yakshanba')
llist.append('Payshanba')
llist.append('Juma')
Do'stlaringiz bilan baham: |