Mühazirə 1 Giriş Əsas anlayışlar. "Məlumat"



Yüklə 0,95 Mb.
səhifə12/44
tarix29.04.2023
ölçüsü0,95 Mb.
#104595
növüMühazirə
1   ...   8   9   10   11   12   13   14   15   ...   44
C fakepathmu hazir struktur

Mühazirə 7
Bir əlaqəli strukturlar.
İndi isə C dilindən istifadə edərək yuxarıda verilən məlumatları kodlaşdıraq. C dilində iki ədəd elementi və iteratoru olan bir struktur yaradaraq və listdə saxlanılan verilənləri ekrana çıxaran proqramı tərtib edək. Strukturun təsviri aşağıdaki kimidir:

Burada işlədilən malloc() (Memory Allocation) funksiyası verilmiş struktura uyğun olaraq yaddaşda (RAM-da) düyüm üçün yer ayrılmasını təmin edən C funksiyasıdır. Digər tərəfdən verilənlər ekrana çıxardılarkən root-dan istifadə olunub. İlk anda root və iterator eyni düyümü göstərdiyindən root->x yerinə iterator->x də yaza bilərdik. Bu proqramın yekun nəticəsi aşağıdaki kimidir:

Nəticədən gördüyümüz kimi RAM-da iki düyüm üçün yer ayrılmış və dəyişənlərə müvafiq olaraq 10 və 20 qiymətləri təyin olunmuşdur.
Tapşırığın davamı olaraq yaradılan əlaqəli listin sonuna yeni bir düyüm əlavə edək və listin son halını ekrana çıxaran proqramı tərtib edək;
Bunun üçün yuxarıda yazdığımız kodda dəyişiklik etməliyik. Əlaqəli listin sonuna bir düyüm əlavə edəcəyimizdən ilk olaraq listin sonunu tapmaq lazımdır. Listin sonunu tapmaq üçün bir dövr ifadəsi istifadə edəcəyik. Əvvəlki iki düyümü manual olaraq yaratdığımıza görə listin sonunun NULL olmasını da təmin etməliyik. Bu halda kod aşağıdaki formaya düşür:

Proqramı başlatsaq aşağıdaki nəticəni alarıq.

Nəticədən görüldüyü kimi dövr hər dəfəsində siyahıya yeni bir element əlavə etmişdir.

Növbəti nümunədə əlaqəli listdən element silmə prosesini ələ alırıq.


Silmə əməliyatını yerinə yetirərkən ehtiyatlı davranmaq lazımdır. İlk olaraq silinəcək elementdən əvvəl gələn elementi tapmaq və onu silinəcək elementdən sonra gələn elementlə əlaqələndirmək lazımdır. Əks təqdirdə listin silinən elementdən sonrakı hissəsi ilə əlaqə kəsildiyindən bu hissə fəzada qalır və əlçatmaz hala düşür. Ona görədə əvvəlki və sonraki elementləri əlaqələndirmək, daha sonra isə silinən elementin yaddaşda tutduğu yeri boşaltmaq lazım gəlir. Bu əməliyat C dilində free() funksiyası ilə yerinə yetirilir. Bu nöqtədə free() funksiyası ilə birbaşa element silmək mümkün olmadığından silinəcək elementi saxlamaq üçün bir başqa pointerə ehtyac yaranır. Bu pointeri temp (temporary-müvəqqəti) ilə qeyd ettikdən sonra silmə əməliyatını yerinə yetirə bilərik.

Aşağıda silmə əməliyatını yerinə yetiran funksiya üçün yazılmışdır. Qeyd etmək lazımdırki silinənəcək elementin listin başında, ortasında vəya sonunda gəlməsini kodda nəzərə almaq lazımdır. Aşaıdaki kod bu tələbləri ödəyir.



İndi isə bu funkisyadan istifadə edərək və əvvəlcədən yaratdığımız və elementləri 10 və 20 dəyərlərini saxlayan listdə 20 elementini silməyə çalışaq;



Gözlədiyimiz nəticə:


İlk olaraq EkranaCixart() funksiyasi hər iki elementi ekrana çıxartmalı;
Daha sonra sil() funkisyası ilə 20 dəyərinə malik düyüm listdən silinməli;
Sonda isə Listin son halı yəni geriyə qalan 10 dəyəri ekrana çıxarılmalıdır.
Proqramı başlatsaq aşağıdaki nəticəni alırıq:

Gözlədiyimiz nəticəni aldığımızı görürük.


İndi isə siyahıda olmayan ixtiyari bir dəyəri silməyə çalışaq və kodun düzgün işləyib işləmədiyi test edək;

44 dəyərinə malik düyümü silməyə çalışırıq və listdə belə düyüm olmadığından aşağıdaki nəticəni alırıq.



Bununlada verilənlərin strukturu mövzusunda Əlaqəli Siyahılar mövzusunu əhatə etmiş olduq.





Yüklə 0,95 Mb.

Dostları ilə paylaş:
1   ...   8   9   10   11   12   13   14   15   ...   44




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin