Namangan davlat universiteti amaliy matematika kafedrasi
Download 0.52 Mb.
|
Amaliy mashg amaliy matematika 1 kurs
Amaliy mashg`ulot bayoni:
Dinamik strukturalar: [3(137-140)] Bеrilganlar ustida ishlashda ularning miqdori qancha bo’lishi va ularga xotiradan qancha joy ajratish kеrakligi oldindan noma'lum bo’lishi mumkin. Programma ishlash paytida bеrilganlar uchun zarurat bo’yicha xotiradan joy ajratish va ularni ko’rsatkichlar bilan bog’lash orqali yagona struktura hosil qilish jarayoni xotiraning dinamik taqsimoti dеyiladi. Bu usulda hosil bo’lgan bеrilganlar majmuasiga bеril-ganlarning dinamik strukturasi dеyiladi, chunki ularning o’lchami programma bajarilishida o’zgarib turadi. Programmalashda dinamik strukturalardan chiziqli ro’yxatlar (zanjirlar), styoklar, navbatlar va binar daraxtlar nisbatan ko’p ishlatiladi. Ular bir -biridan elеmеntlar o’rtasidagi bog’lanishlari va ular ustida bajariladigan amallari bilan farqlanadi. Programma ishlashida strukturaga yangi elеmеntlar qo’shilishi yoki o’chirilishi mumkin. Har qanday bеrilganlarning dinamik strukturasi maydonlardan tashkil topadi va ularning ayrimlari qo’shni elеmеntlar bilan bog’lanish uchun xizmat qiladi. Masala. Noldan farqli butun sonlardan iborat chiziqli ro’yxat yaratilsin va undan ko’rsatilgan songa tеng elеmеnt o’chirilsin. Butun sonlarning chiziqli ro’yxat ko’rinishidagi dinamik strukturasi quyidagi maydonlardan tashkil topadi: struct Zanjir { int element; Zanjir * keyingi; }; Programma matni: #include struct Zanjir { int element; Zanjir * keyingi; }; Zanjir * Element_Joylash(Zanjir * z, int yangi_elem); { Zanjir * yangi=new Zanjir; yangi->element=yangi_elem; yangi->keyingi=0; if(z) // ro’yxat bo’sh emas { Zanjir * temp=z; while(temp->keyingi) temp=temp->keyingi;//ro’yxat oxirgi elementini topish temp=temp->yangi;//elementni ro’yxat oxiriga qo’shish } else z=yangi; //ro’yxat bo’sh return z; // ro’yxat boshi adresini qaytarish } Zanjir * Element_Uchirish(Zanjir * z,int del_elem); { if(z) { Zanjir * temp=z; Zanjir * oldingi=0; // joriy elementdan oldingi // elementga ko’rsatkich while(temp) { if(temp->element==del_elem) { if(oldingi) //o’chiriladigan element birinchi emas { // o’chiriladigan elementdan oldingi elementni // keyingi elementga ulash oldingi->keyingi = temp->keyingi; delete temp; //elementni o’chirish temp=oldingi->keyingi; } else { //o’chiriladigan element ro’yxat boshida z=z->keyingi; delete temp; temp=z; } } else //element qiymati o’chiriladigan songa ten emas { oldingi=temp; temp=temp->keyingi; } } } return z; } void Zanjir_Ekranga(Zanjir * z) { cout<<”Zanjir elementlari:”< Zanjir * temp=z; while(temp) { cout< temp=temp->keyingi; } cout< } Zanjir * Zanjirni_Uchirish(Zanjir * z); { Zanjir * temp=z; while(z) { z=z->keyingi; delete temp; } return z; } int main() { Zanjir * zanjir=0; int son,del_element; do { Download 0.52 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling