logo

Yığın nedir?

Yığın, aşağıdakileri takip eden doğrusal bir veri yapısıdır: LIFO (Son Giren İlk Çıkar) prensip. Yığın bir ucu varken Kuyruğun iki ucu vardır ( ön ve arka ). Yalnızca bir işaretçi içerir üst işaretçi yığının en üst elemanına işaret eder. Yığına bir öğe eklendiğinde yığının en üstüne eklenir ve öğe yalnızca yığından silinebilir. Başka bir deyişle, bir yığın, yığının tepesi olarak bilinen bir ucundan ekleme ve silme işleminin yapılabildiği bir kap olarak tanımlanabilir.

Yığınla ilgili bazı önemli noktalar

  • Yığın olarak adlandırılır çünkü gerçek dünyadaki bir yığın, kitap yığını vb. gibi davranır.
  • Yığın, önceden tanımlanmış kapasiteye sahip soyut bir veri türüdür; bu, sınırlı boyuttaki öğeleri depolayabileceği anlamına gelir.
  • Öğeleri eklemek ve silmek için belirli bir sıra izleyen bir veri yapısıdır ve bu sıra LIFO veya FILO olabilir.

Yığın Çalışması

Stack, LIFO modeli üzerinde çalışır. Aşağıdaki şekilde görebileceğimiz gibi yığında beş adet bellek bloğu bulunmaktadır; bu nedenle yığının boyutu 5'tir.

img css hizalama

Elemanları bir yığında depolamak istediğimizi varsayalım ve yığının boş olduğunu varsayalım. Aşağıda gösterildiği gibi 5 boyutunda bir yığın aldık, burada öğeleri yığın dolana kadar birer birer itiyoruz.

DS Stack'a Giriş

Yığımızın boyutu 5 olduğu için yığınımız dolu. Yukarıdaki durumlarda, yığına yeni eleman girerken yukarıdan aşağıya doğru gittiğini gözlemleyebiliriz. Yığın aşağıdan yukarıya doğru doldurulur.

Stack üzerinde silme işlemini yaptığımızda diğer ucu kapalı olduğundan giriş çıkış için tek yol kalıyor. LIFO modelini takip eder; bu, ilk girilen değerin en son kaldırılacağı anlamına gelir. Yukarıdaki durumda ilk önce 5 değeri girilir, dolayısıyla yalnızca diğer tüm öğelerin silinmesinden sonra kaldırılacaktır.

Standart Yığın İşlemleri

Yığın üzerinde uygulanan bazı yaygın işlemler şunlardır:

    itmek():Bir yığına bir öğe eklediğimizde, işleme itme denir. Yığın doluysa taşma durumu oluşur.pop():Yığından bir öğeyi sildiğimizde, işleme pop denir. Yığın boşsa, yığında hiçbir öğenin bulunmadığı anlamına gelir, bu duruma yetersiz akış durumu denir.boş():Stack'ın boş olup olmadığını belirler.dolu():Yığının dolu olup olmadığını belirler.'dikizlemek():Verilen konumdaki öğeyi döndürür.saymak():Bir yığında mevcut olan toplam öğe sayısını döndürür.değiştirmek():Verilen konumdaki öğeyi değiştirir.görüntülemek():Yığındaki mevcut tüm öğeleri yazdırır.

İTME işlemi

PUSH operasyonundaki adımlar aşağıda verilmiştir:

maven nedir
  • Bir yığına eleman eklemeden önce yığının dolu olup olmadığını kontrol ederiz.
  • Eğer öğeyi bir yığına yerleştirmeye çalışırsak ve yığın doluysa, o zaman taşma durum oluşur.
  • Bir yığını başlattığımızda yığının boş olup olmadığını kontrol etmek için top değerini -1 olarak ayarlıyoruz.
  • Yeni eleman bir yığına itildiğinde, ilk önce en üstteki değer artırılır, yani; üst=üst+1, ve eleman yeni konumuna yerleştirilecektir. tepe .
  • Öğeler, şuraya ulaşana kadar eklenecektir: maksimum yığının boyutu.
DS Stack'a Giriş

POP işlemi

POP operasyonunda yer alan adımlar aşağıda verilmiştir:

  • Elemanı yığından silmeden önce yığının boş olup olmadığını kontrol ederiz.
  • Öğeyi boş yığından silmeye çalışırsak, o zaman taşma durum oluşur.
  • Yığın boş değilse ilk önce işaret ettiği öğeye erişiriz. tepe
  • Pop işlemi gerçekleştirildikten sonra üst kısım 1 azaltılır, yani; üst=üst-1 .
DS Stack'a Giriş

Yığın Uygulamaları

Yığın uygulamaları şunlardır:

    Sembollerin dengelenmesi:Yığın, bir sembolü dengelemek için kullanılır. Örneğin aşağıdaki programa sahibiz:
 int main() { cout&lt;<'hello'; cout<<'javatpoint'; } < pre> <p>As we know, each program has <em>an opening</em> and <em>closing</em> braces; when the opening braces come, we push the braces in a stack, and when the closing braces appear, we pop the opening braces from the stack. Therefore, the net value comes out to be zero. If any symbol is left in the stack, it means that some syntax occurs in a program.</p> <ul> <tr><td>String reversal:</td> Stack is also used for reversing a string. For example, we want to reverse a &apos; <strong>javaTpoint</strong> &apos; string, so we can achieve this with the help of a stack. <br> First, we push all the characters of the string in a stack until we reach the null character. <br> After pushing all the characters, we start taking out the character one by one until we reach the bottom of the stack. </tr><tr><td>UNDO/REDO:</td> It can also be used for performing UNDO/REDO operations. For example, we have an editor in which we write &apos;a&apos;, then &apos;b&apos;, and then &apos;c&apos;; therefore, the text written in an editor is abc. So, there are three states, a, ab, and abc, which are stored in a stack. There would be two stacks in which one stack shows UNDO state, and the other shows REDO state. <br> If we want to perform UNDO operation, and want to achieve &apos;ab&apos; state, then we implement pop operation. </tr><tr><td>Recursion:</td> The recursion means that the function is calling itself again. To maintain the previous states, the compiler creates a system stack in which all the previous records of the function are maintained. </tr><tr><td>DFS(Depth First Search):</td> This search is implemented on a Graph, and Graph uses the stack data structure. </tr><tr><td>Backtracking:</td> Suppose we have to create a path to solve a maze problem. If we are moving in a particular path, and we realize that we come on the wrong way. In order to come at the beginning of the path to create a new path, we have to use the stack data structure. </tr><tr><td>Expression conversion:</td> Stack can also be used for expression conversion. This is one of the most important applications of stack. The list of the expression conversion is given below: <pre>Infix to prefix Infix to postfix Prefix to infix Prefix to postfix Postfix to infix</pre> </tr><tr><td>Memory management:</td> The stack manages the memory. The memory is assigned in the contiguous memory blocks. The memory is known as stack memory as all the variables are assigned in a function call stack memory. The memory size assigned to the program is known to the compiler. When the function is created, all its variables are assigned in the stack memory. When the function completed its execution, all the variables assigned in the stack are released. </tr></ul> <hr></'hello';>
Bellek yönetimi:Yığın belleği yönetir. Bellek bitişik bellek bloklarına atanır. Tüm değişkenler bir işlev çağrısı yığın belleğinde atandığından bellek yığın belleği olarak bilinir. Programa atanan bellek boyutu derleyici tarafından bilinir. Fonksiyon oluşturulduğunda tüm değişkenleri yığın hafızasına atanır. Fonksiyon yürütmeyi tamamladığında yığında atanan tüm değişkenler serbest bırakılır.