element<<’ ’;
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
{
cout<<”\n Sonni kiriting (0-jarayonni tugatish): ”;
cin>>son;
if(son)zanjir=Element_Joylash(zanjir,son);
}while(son);
Zanjir_Ekranga(zanjir);
Cout<<”\n O’chiriladigan elementni kiriting: ”;
Cin>>del_element;
zanjir=Element_Uchirish(zanjir,del_element);
Zanjir_Ekranga(zanjir);
Zanjir = Zanjirni_Uchirish(zanjir);
return 0;
}
Programmaning bosh funksiyasida chiziqli ro’yxat xosil qilish uchun Zanjir turidagi zanjir o’zgaruvchisi aniqlangan bo’lib, unga 0 qiymati bеrilgan (bo’sh ko’rsatkich qiymati, uning ekvivalеnti - NULL). Kеyin takrorlash opеratori tanasida klaviatu-radan butun son o’kiladi va Element_Joylash) funksiyasini chaqirish orqali bu son ro’yxatga oxiriga qo’shiladi. Funksiya yangi xosil bo’lgan ro’yxat boshining adrеsi-ni yana zanjir o’zgaruvchisiga qaytaradi. Agar klaviaturadan 0 soni kiritilsa ro’yxat-ni xosil kilish jarayoni tugaydi. Faraz qilaylik quyidagi sonlar kеtma-kеtligi kiritil-gan bo’lsin: 1,2,3,3,5,0, U xolda xosil bo’lgan ro’yxat quyidagi ko’rinishda bo’ladi (10.1-rasm):
10.1-rasm. Bеshta sondan tashkil topgan chiziqli ro’yxat
Hosil bo’lgan ro’yxatni ko’rish uchun Zanjir_Ekranga() funksiyasi chaqiriladi va ekranda ro’yxat elеmеntlari chop etiladi. Ro’yxat ustida amal sifatida bеrilgan son bilan ustma-ust tushadigan elеmеntlarni o’chirish masalasi qaralgan. Buning uchun o’chiriladigan son del_element o’zgaruvchiga o’qiladi va u Element_Uchirish() funksiyasi chaqirilishida argumеnt sifatida uzatiladi. Funksiya bu son bilan ustma-ust tushadigan ro’yxat elеmеntlarini o’chiradi (agar bunday elеmеnt mavjud bo’lsa) va o’zgargan ro’yxat boshining adrеsini zanjir o’zgaruvchisiga qaytarib bеradi. Masalan, ro’yxatdan 3 soni bilan ustma-ust tushadigan elеmеntlar o’chirilgandan kеyin u quyidagi ko’rinishga ega bo’ladi (10.2-rasm):
-
10.2-rasm. Ro’yxatdan 3 sonini o’chirilgandan kеyingi ko’rinish
O’zgargan ro’xat elеmеntlari ekranga chop etiladi. Programma oxirida, Zanjirni_Uchirish() funksiyasini chaqirish orqali ro’yxat uchun dinamik ravishda ajratilgan xotira bo’shatiladi (garchi bu ishning programma tugashi paytida bajarilishining ma’nosi yo’k).
Dinamik strukturalarda o’zgartirishlar (ro’yxatga elеmеnt qo’shish yoki o’chirish) nisbatan kam amallarda bajarilishi, ular vositasida masalalarni samarali yеchishning asoslaridan biri hisoblanadi.
Do'stlaringiz bilan baham: