Veri Yapıları: Stack Yapısı

image
image
image
Veri Yapıları: Stack Yapısı

Veri Yapıları: Stack Yapısı

Stack yapısı elemanları üst üste dizilmiş olan bir dizi yapısıdır. Klasik bildiğimiz diziden farkı direkt olarak şu index’teki elemanı getir diyerek istediğimiz elemana ulaşamamamızdır. Elemanlarla işlem yapmak için Stack yapısında bulunan metodları kullanırız. Bu metodlar Pop(), Push() metodlarıdır. Pop() metodunu çağırdığımızda en üsteki elemanı çıkarır ve bize elemanı döndürür. Push() metodu içine eklenecek elemanı parametre olarak alır ve dizinin en üstüne koyar.

Stack class’ı nasıl yazılır?

Stack yapısının field olarak bir adet dizi ve bir adet üstü tutacak integer değişkeni vardır.

T[] values; // dizi

int top; // üst

Stack class’ının içine constracter  yazılır. Constracter parametre olarak dizinin boyutunu alır ve dizinin boyutu belirlenmiş olur. Top değerine de -1 değeri atanır.

public Stack(int size)

        {

            values = new T[size];

            top = -1;   

        }

Yazılacak diğer metodlar

public bool IsEmpty()

        {

            return top == -1;

        }

 

Stack’in top değeri -1 ise boştur.

 

        public bool IsFull()

        {

            return top == values.Length - 1;

        }

 

Stack’in top değeri dizinin boyutundan 1 eksik ise dolu demektir.

 

        public void Push(T val)

        {

            if (!IsFull())

            {

                values[++top] = val;

            }

            else

                Console.WriteLine("stack is full");

        }

 

Push() metodu içine parametre olarak eklenecek değeri alır ve en üste ekler. Eğer stack dolu ise değeri ekleyemez, uyarı mesajını yazdırır.

 

        public T Pop()

        {

            if (!IsEmpty())

            {

                T temp = values[top--];

                return temp;

            }

            else

            {

                Console.WriteLine("stack is empty");

                return default(T);

            }

        }

 

Pop() metodu en üstteki değeri çıkartır ve bize bu değeri döndürür. Eleman yok ise uyarı mesajı yazdırır.

 

        public void Display()

        {

            if(!IsEmpty())

            {

                for (int i = top; i >=0; i--)

                {

                    Console.WriteLine(values[i]);

                }

            }else

                Console.WriteLine("stack is empty");

            Console.WriteLine();

        }

 

Stack’teki değerleri görüntülemek için Display() metodunu kullanabiliriz. En son eklediğimiz en üstte olduğu için görüntüleme en son eklenenden ilk eklenene doğru olur.

Ödev olarak verilen, stack yapısını kullanarak html taglarının açılıp kapanmasının kontrolünü yaptıran kodu açıkladığım yazımı okumak için: http://bit.ly/20AxCCS