Microsoft Word malumotlar tuzilmasi va algoritimlash mustaqil ishi docx


Download 0.72 Mb.
Pdf ko'rish
Sana07.10.2023
Hajmi0.72 Mb.
#1694492
Bog'liq
Zehniddin



O‘ZBEKISTON RESPUBLIKASI AXBOROT 
TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI 
RIVOJLANTIRISH VAZIRLIGI 
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT 
AXBOROT TEXNOLOGIYALARI UNIVERSITETI 
SAMARQAND FILIALI 
“KOMPYUTER INJINIRINGI” FAKULTETI 
“AXBOROT TEXNOLOGIYALARI” KAFEDRASI 
KI 21-02 GURUH TALABASI XASANOV
ZEHNIDDINNING MALUMOTLAR TUZILMASI VA
ALGORITIMLAR FANIDAN 1-MUSTQAIL ISHI 
MAVZU: Bir bog‘lamli ro‘yxatlar ustida amllar va ularning 
algoritmlari 
Tekshirdi; Isroilov.SH 
SAMARQAND — 2022


Mavzu :
Bir bog‘lamli ro‘yxatlar ustida amallar va ularning 
algoritmlari 
Bog’lamli ro'yxat - bu chiziqli ma'lumotlar strukturasi bo'lib, uning 
elementlari qo'shni joyda saqlanmaydi. Bu shuni anglatadiki, bog’lamli 
ro'yxatda "tugunlar" deb nomlanuvchi alohida va kuolalar mavjud bo'lib, ular 
yaratilgan ma'lumotlarni va ro'yxatdagi boshqa tugunga havolani o'z ichiga 
oladi. 
Bir bog’lamli ro'yxat. Bir bog’lamli ro'yxat bir nechta tugunlardan iborat 
bo'lib, ularning har biri a) ma'lumotlar va b) keyingi tugunga havolani 
o'z ichiga oladi. 
1-rasm. Bir bog’lamli ro'yxat. 
Yuqoridagi rasmda biz bog’lamli ro'yxatning tartibini ko'rishimiz 
mumkin. Chapdan boshlab va o'ngga qarab, biz ro'yxatning sarlavhasida 
ma'lumotlar va keyingi tugunga ko'rsatgich borligini ko'ramiz. Ushbu naqsh 
ro'yxatning oxirigacha davom etadi, bu erda u tugun emas. NULL qiymati 
ro'yxat tugaganligini bildiradi. 
Bir bog’lamli ro'yxat yaratish uchun quyidagi kodni ko'rib chiqing. 
class tugun: 
#tugun obyekti 
def init(self,data): 
self.data=data 
self.next=None 
class royxat: 
#bog\'langan royxat 
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): 
#list boshiga tugun qo'shish 
new_tugun =tugun(new_data) 
#birinchidagi elementni 2-ga o'tgazamiz 
new_tugun.next=self.head 
#yangi tugunni list boshiga qo\'yamiz 
self.head =new_tugun 
def insert_after(self,prev_node,new_data): 
#biror tugundan keyin tugun qo'shish 
if prev_tugun is None: 
print('Tugun mavjud emas') 
#yangi tugun qoshamiz 
new_tugun =tugun(new_data) 
#yangi tugunni keyingi tugunga bog'laymiz 
new_tugun.next=prev_tugun.next 
Bir bog’lamli ro’yhat boshidan elementni o’chirish
Ro‗yhatda birinchi element info informatsion maydonidagi ma‘lumotni esda saqlab 
qolib uni ro‗yhatdan o‗chiramiz (2-rasm). 
2-rasm. Ro‗yhat boshidagi elementni o‗chirish 
Yuqorida aytilganlarni amalga oshirish uchun quyidagi ishlarni bajarish lozim: 
a.
o‗chirilayotgan elementni ko‗rsatuvchi p ko‗rsatkich kiritish: p=lst; 


b.
p ko‗rsatkich ko‗rsatayotgan element info maydonini qandaydir x 
o‗zgaruvchida saqlash: x=p->info; 
c.
lst ko‗rsatkichni yangi ro‗yhat boshiga ko‗chirish: lst=p->ptr; 
d.
p ko‗rsatkich ko‗rsatayotgan elementni o‗chirish: delete(p); Natijada 3-
rasmdagi ko‗rinishga ega bo‗lamiz. 
3-rasm. Ro’yhatning natijaviy ko‗rinishi 
Endi shu algoritmni C++ tilidagi realizatsiyasini ko„rib chiqsak. 
Node* p = new Node; if 
(lst == NULL){ cout<<"ro'yhat bo'sh"; system("pause"); system("CLS"); 

else { p = lst; 
lst = p->next ; delete(p); 

3. Elementni ro‗yhatga qo‗shish
Berilgan ro’yhatda p ko‗rsatkich ko‗rsatayotgan elementdan keyin informatsion 
maydoni x bo‗lgan elementni qo‗yamiz (4-rasm). 


4-rasm. Ro‗yhatga yangi element qo‗shish 
Aytilganlarni amalga oshirish uchun quyidagi amallarni bajarish lozim: 
a.
q ko‗rsatkich ko‗rsatuvchi bo‗sh elementni yaratish: Node *q=new 
Node; 
b.
Yaratilgan element informatsion maydoniga x ni kiritish: q->info=x; 
c.
q elementni p elementdan keyingi element bilan bog‗lash. 
q->ptr=p->ptr – yaratilgan element ko‗rsatkichiga p element ko‗rsatkichini 
o‗zlashtirish. 
p element bilan q elementni bog‗lash
. p->ptr=q – bu amal p elementdan keyingi element q ko‗
rsatkich murojaat
qilgan element bo‗lishini anglatadi. 
Natijada quyidagi rasmdagidek ko‗rinishga ega bo‗lamiz. 
5-rasm. Natijaviy ro‗yhat ko‗rinishi 
Endi shu algoritmni C++ tilidagi realizatsiyasini ko‗rib chiqsak. 
Node * p = lst; 
Node * q = new Node; 
int numb = -1; 
cout<<"son kiriting: "; 
cin>>numb; 
q->number = numb; int k; 


cout<<"nechta elementdan keyin kiritasiz k="; 
cin; >>k; 
for(int i=0;inext; 
q->next = p->next; 
p->next = q; 
4. Bir bog’lamli ro’yhatdan elementni o’chirish
Ro‗yhatda p ko‗rsatkich ko‗rsatayotgan elementdan keyingi elementni o‗chiramiz 
(6-rasm). 
6-rasm. Ro‗yhat o‗rtasidan element o‗chirish 
Buni ro‗yobga chiqarish uchun quyidagi ishlarni amalga oshirish lozim: a) 
O‗chirilayotgan elementni ko‗rsatuvchi q ko‗rsatkichni kiritish. 
b. q=p->ptr;
p elementni q elementdan keyingi element bilan bog‗lash. 
p->ptr=q->ptr; 
b.
O‗chirilayotgan element info maydonidagi informatsiyani yodda 
saqlash (agar zarur bo‗lsa) k=q->info; 
b.
q ko‗rsatkich ko‗rsatayotgan elementni o‗chirish. 
c. delete(q) 


d.
Natijada ro‗yhat quyidagi ko‗rinishga ega bo‗ladi: 
6-rasm. Natijaviy ro‗yhat ko‗rinishi Shu algoritm dasturi: 
Node* p = lst; 
Node* q = new Node; 
int k; 
cout<<"k="; 
cin>>k; 
for(int i=0;i<="" p=""> 
p=p->next; 
q = p->next; 
p->next = q->next; 
delete(q); 
Xulosa 
Bu mustaqil ishining asosiy maqsadi dinamik ma’lumotlar tuzilmasi haqida 
ma’lumot berish.Men bu mustaqil ishda yuqorida ularni yoritishga 
qay tartibda 
ishlatilishi,ularning 
tarkibiga 
nimalar 
kiritilishi 
haqida 
ma’lumot 
berdim.Qisqacha b
u tuzulma haqida ma’lumot beradiga bo’lsam biz biror 
ma’lumotlar olsak uni joylashtirganda xotirada qay tartibda joylashishi va albatta 
hajmi o’zgarish o’zgarmasligiga qarab xar-xil tuzulmalar mavjud.Dinamik 
ma’lumotlar tuzulmasini joylashtirganimizda static tuzulmasidan farqli ravishda 
uning hajmini o’zgartirishimiz mumkin(kamaytirishimiz yoki qo’shishimiz yoki 
batamom o’chirvorishimiz mumkin).Uning albatta tur xil avzallilari va kamchiliklari 
mavjud. 
Foydalanilgan adabiyotlar ro’yxati: 
1. Adam Drozdek. Data structures and algorithms in C++. Fourth edition. 
2013. 
2. Н.А.Литвиненко. Технология программирования. ―БХВ Петербург‖ 
Санкт-Петербург. 2012 г. 
3. Роберт Седжвик. Фундаментальные алгоритмы на C++. Анализ, 
Структуры данных, Сортировка, Поиск//К.: Изд. «ДиаСофт», 2007 


4. Ma‘ruza matnlari. Carnegie Mellon University – CORTINA. 2010. 15- 
121 Introduction to Data Structures, (http://www.cs.cmu.edu/~tcortina/15- 
121sp10/lectures.html)

Download 0.72 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling