85
Dastur natijasi
Ishni bajarishga namuna
Topshiriq variantlariga o‟xshash bitta misolning algoritmi va to‟liq dasturini
ko‟rib chiqaylik.
Misol: berilgan binar daraxtdan ko‟rsatilgan
key
kalitga mos tugunni
o‟chirish dasturini tuzing.
Algoritm
Asosiy dastur tanasi -
int main()
1.
i=0; n
– daraxtga kiritiladigan elementlar sonini aniqlash. Daraxt ildizi
ko‟rsatkichi
tree=NULL
.
Next
yangi elementni joylashtiradigan shoxga o‟tishda
ishlatiladi va
last next
dan 1 qadam orqada yuradi.
2.
Agar
i
bo‟lsa, daraxtga kiritiladigan navbatdagi elementga qiymat
kiritish va uni yangi
p
element
info
maydoniga yozish,
left
va
right
maydonlarga
NULL
yozish. Aks holda 8-qadamga o‟tish.
3.
Agar
tree=NULL
bo‟lsa,
p
ni
daraxt ildizi qilish, ya‟ni
tree=p
va
87
bo‟lgan tugunning
info
maydoni qiymati
key
beriladi. Daraxtning
key
kalitli
tugunini terminal tugungacha izlaymiz. Dastlab
next=tree
.
1.
Toki
next NULL
bo‟lguncha, agar
next
tugunning
info
maydoni
key
ga
teng bo‟lsa, izlayotgan tugunni topdik va uning adresini
p
ga joylaymiz va 4-
qadamga o‟tamiz. Agar
next NULL
bo‟lsa, 3-qadamga o‟tamiz.
2.
Agar
key
next
ning
info
sidan kichik bo‟lsa, joriy tugunning chap
tomonidagi tugunga o‟tamiz, ya‟ni
next=next->left
, aks holda o‟ng shoxdagi
tugunga o‟tamiz. 1-qadamga qaytamiz.
3.
Agar
next NULL
ga teng bo‟lsa, biz izlagan tugun tuzilmada yo‟q.
Tugunni o‟chirish algoritmi tugaydi va dastur bajarilishi o‟chirish funksiyasi
chaqirilgan joyga qaytib boradi.
4.
Agar
p
o‟chirilayotgan tugunning chap tomonida tugun yo‟q bo‟lsa (ya‟ni
p->left=NULL bo‟lsa), uning o‟ng tomonidagi tugun adresini
v
ga o‟zlashtiramiz.
5.
Agar
p
o‟chirilayotgan tugunning o‟ng tomonida tugun yo‟q bo‟lsa, uning
chap tomonidagi tugun adresini
v
ga o‟zlashtiramiz.
6.
Agar
p
o‟chirilayotgan tugunning chapi va o‟ngida element mavjud
bo‟lsa, bu tugunning o‟rniga da‟vo qiladigan tugunni topish uchun shu tugundan 1
marta o‟ngga va oxirigacha chap shox tuguniga o‟tamiz. Ya‟ni
Do'stlaringiz bilan baham: