Stek üzərində əməliyyatlar
push (s, i) əməliyyatında S steki və i elementi üçün təyin olunur və i elementi s stekinə yerləşdirilir. Analoji olaraq, stekdən seçmək üçün pop (s) əməliyyatından istifadə olunur, burada s stekindəki yuxarı element xaric olunur və funksiyanın qiyməti şəklində qaytarılır. Deməli,
i = pop (s)
mənimsəmə əməliyyatı vasitəsi ilə stekin təpəsindən elementi xaric olunur və onun qiymətini i dəyişəninə mənimsədir.
Stek üzərində aparılan digər əməliyyatlardan biri də empty (s) əməliyyatıdır və bu əməliyyat onun boş olub-olmadığını yoxlayır. Stek boş olduğu halda empty (s) əməliyyatı “həqiqi“ , əks halda isə “yalan“ qiyməti qaytarır.
stacktop ( s ) əməliyyatından isə stekin təpəsindəki elementi təyin etmək üçün ( onu xaric etmədən )
istifadə etmək olar. O stekin təpəsindəki elementi qaytarır. Göründüyü kimi,
i = stacktop ( s ) əməliyyatı
i = pop ( s ); push ( s,i )
əməliyyatları ilə eyni funksiyasını yerinə yetirir.
Qeyd etmək lazımdır ki, pop (s) və stacktop (s) əməliyyatları boş stek üçün təyin edilməyib.
Stekin alqoritmik dillərdə həyata keçirilməsi.
Eyni tipli verilənlər yığımından ibarət ardıcıl təşkil olunan stek kimi proqramlaşdırma dillərində bu cür xarakteristikaya malik verilənlər tipi – massiv artıq mövcuddur. Ona görə də hər hansı məsələnin həlli üçün stek lazım olarsa, o zaman proqramda massiv obyektindən istifadə etmək olar. Lakin qeyd etmək lazımdır ki, stek dinamik strukturaya malik dir və bu o deməkdir ki ,elementləri ona daxil edildikcə və xaric olunduqca onun ölçüsü dəyişir və digər tərəfdən massiv sabit strukturaya malik olduğundan, steklə massiv tamamilə eyni obyektlər sayıla bilməz. Nəticədə demək olar ki, massiv stek üçün hər hansı bir baza ola bilər. Beləliklə, massiv stekin maksimal ölçüsünü örtə bilən ölçü ilə elan oluna bilər. Digər tərəfdən sadə dəyişəndən istifadə etmək olar ki, bu da hər anda stekin təpəsini cari vəziyyət üçün izləməyə imkan verir.
İndi isə C dilində sözü gedən Stack strukturunu quraq;
Və özümüzün Pop(), Push() funksiyalarımızı yazaraq nümunədə işlədək;
Aşağıdaki C kodunu təhlil edək;
Burada Custom Pop() və Push() funksiyaları təyin olunmuşdur.
Əlavə olaraq əməliyyatların nəticəsini vizual olaraq görmək üçün Ekranacixart() funksiyası var.
Üstündə əməliyat aparılan massiv dinamik Memory Allocation ilə təyin olunmuşdur buda bizə lazım gəldikdə massivin ölçüsünü artırıb azaltmağa imkan verəcək. Göründüyü kimi ilk olaraq 35 və 45 ədədləri Push olunmalı və daha sonra isə Pop() funksiyası işə düşərək son əlavə olunan elementi Pop etməlidir.
Bu proqramı başlatsaq aşağıdaki nəticəni alırıq;
Gözlədimiz kimi ilk olaraq Push() funksiyası 35 və 45 ədədlərini əlavə etmiş və daha sonra Pop() funksiyası son əlavə olunan elementi (45) silmişdir. Və sondaki 35 massivin son halını görmək üçün yazdığımız Ekranacixart() funksiyasının nəticəsidir (24.cü sətir).
Dostları ilə paylaş: |