Yığın / Yığın İşaretçisi Nedir: Türler ve Uygulamaları

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Yığın, ekleme ve silme işleminin yalnızca bir uçta gerçekleştiği doğrusal veri yapısından başka bir şey değildir. Yerleştirme işlemi, PUSH olarak bilinen özel bir isme sahiptir ve silme işlemi de POP olarak bilinen özel bir isme sahiptir. PUSH ve POP, yalnızca belirli bir yığında gerçekleştirilebilen iki temel işlemdir. Bu bir grup bellek konumudur ve bellek konumları ya okuma belleği ya da yazma belleği ile ilgilidir. Bu, programın yürütülmesi sırasında ikili bilgileri depolamak için kullanılır, herhangi bir programı çalıştırdığımızda, o programın içeriği yığında saklanacaktır. Takip eder Son Giren İlk Çıkar (LIFO) ve yalnızca verileri depolamak ve almak için kullanılır, ancak verileri depolamak için kullanılmaz. Yığın / yığın işaretçisinin kısa açıklaması aşağıda tartışılmıştır.

Yığın / Yığın İşaretçisi nedir?

Tanım: Yığın, bilgileri veya verileri LIFO (Son Giren İlk Çıkar) biçiminde depolamak için kullanılan bir depolama aygıtıdır. Veriyi LIFO biçiminde her girdiğimizde, ilk silinmesi gereken öğe son yerleştirici öğedir, bu nedenle en son eklenen öğe ilk önce çıkarılır. Yığın işaretçisi (SP) adı verilen bir adres kaydı içindeki bellek birimidir. Yığın işaretçisi her zaman yığındaki en üst öğeyi gösterir; bu, verilerin ekleneceği konum anlamına gelir.




Yığın Türleri

Kayıt yığını ve bellek yığını olmak üzere iki tür yığın vardır.

Yığını Kaydet

Kayıt yığını aynı zamanda bellek biriminde bulunan bir bellek cihazıdır, ancak yalnızca küçük miktarda veriyi işler. Yığın derinliği, yazmaç yığınında her zaman sınırlıdır çünkü yazmaç yığınının boyutu belleğe kıyasla çok küçüktür.



Kayıt Yığınında İşlemi İtin

Aşama 1: Yığın işaretçisi 1 artar.

SP ← SP + 1


Adım 2: Verileri yığına girin.

1000 [SP] ← CT

DR'nin Veri Kaydı olduğu durumlarda

Aşama 3: Yığının dolu olup olmadığını kontrol edin

eğer (sp = 0) o zaman (tam ← 1)

Adım4: Boş değil olarak işaretle

boş ← 0

Kayıt Yığınında Pop İşlemi

Aşama 1: Yığından verileri okuyun.

DR ← M [SP]

Adım 2: Yığın noktasını azaltın.

SP ← SP-1

Aşama 3: Yığının boş olup olmadığını kontrol edin

sp = 0 ise boş ← 1

64-bit yazmaç yığınının yığın organizasyonu aşağıdaki şekilde gösterilmektedir.

Yığın Organizasyonunu Kaydedin

Yığın Organizasyonunu Kaydedin

Bellek Yığını

Bellek yığınında yığın derinliği esnektir. Büyük miktarda hafıza verisi işgal ederken, kayıt yığınında sadece sınırlı sayıda hafıza kelimesi depolanacaktır.

Bellek Yığınında İşlemi İtin

Aşama 1: SP ← SP-1

Adım 2: 1000 [SP] ← CT

Bellek Yığınında Pop işlemi

Aşama 1: DR ← M [SP]

Adım 2: SP ← SP-1

Kayıt birimi ile karşılaştırıldığında, bellek birimi büyük miktarda veri depolar. Bellek yığını şekli aşağıdaki şekilde gösterilmiştir.

Bellek Yığını

Bellek Yığını

Toplam bellek birimi üç bölüme ayrılmıştır, birinci bellek birimi programa sahiptir (talimatlardan başka bir şey yoktur), ikinci bölüm veri (işlenenler) ve üçüncü bölüm yığın halindedir. Program talimatları her zaman program sayacında (PC) depolanır, veri kayıtları adres kaydı (AR) ile tanımlanır. Yığın ve ilk öğe veya öğe için kullanılan 3000 ila 4001 adresi 4001'de saklanır.

8085 Mikroişlemcide Yığın / Yığın İşaretçisi

8085'in programcı görünümü mikroişlemci genel amaçlı kayıtları içerir ve özel amaçlı kayıtlar . Genel amaçlı kayıtlar A, B, C, D, E, H, L'dir ve özel amaçlı kayıtlar SP (Yığın İşaretçisi) ve PC'dir (Program Sayacı). 8085 mikroişlemcinin programcı görünümü aşağıdaki şekilde gösterilmektedir.

8085 Programcı Görünümü

8085 Programcı Görünümü

Yığın işaretçisi, 16 bitlik bir yazmaç olup bellek adresi içerir, yığın işaretçisi (SP) içeriğinin FC78H olduğunu varsayalım, sonra mikroişlemci 8085 bunu yorumlar. Bellek konumları, FC78H'den FFFH'ye ve FC77H'den 0000H'ye kadar yararlı bilgiler içerir, bellek konumu yararlı bilgilere sahip değildir. Yığın işaretçisinin yorumu aşağıdaki şekilde gösterilmiştir.

Yığın İşaretçisinin Yorumlanması

Yığın İşaretçisinin Yorumlanması

Yığın / Yığın İşaretçisinin Temel İşlemleri

Yığının iki işlemi vardır: İTME işlemi ve POP işlemi.

PUSH İşlemi

PUSH, yığına bir öğe itmek veya eklemek anlamına gelir. PUSH işlemi her zaman yığın işaretçisini artırır ve POP işlemi her zaman yığın işaretçisini azaltır. İtme işlemi durumunda, boş alan olup olmadığını kontrol etmeliyiz. Boş alan varsa, push işlemine gidebiliriz, boş alan yoksa taşma hata mesajı oluşur. Taşma, sırasıyla itme işlemi durumunda kontrol edilecektir. Push ve pop'un temel çalışması aşağıdaki şekilde gösterilmektedir.

PUSH ve POP

PUSH ve POP'un Temel Çalışması

Şekil (a) yığın. Öğeyi yığına ekleyen öğeyi itmek istiyorsanız, (s, a) düğmesine basmanız gerekir, burada 's' bir yığından başka bir şey değildir. Yığının içine 'a' öğesini yerleştiriyoruz ve bu işlem şekil (b) 'de gösterilmektedir. Şekil (3) 'e bakın, yığının a, b, c üç eleman içerdiğini ve yığının bir elemanla dolu olduğunu varsayalım.

Push (s, d) kullanarak dördüncü bir öğe 'd' eklemek istiyorsanız, ancak öğeyi eklemek için yeterli alan yoksa bu, yığının taştığını gösterir. Taşma terminolojisi yığın dolu olduğunda kullanılır ve itme işlemi algoritması aşağıda gösterilmiştir.

itme (yığın [], üst, maksimum yığın, öğe)

eğer (top == maxstack-1)

{

'taşma' yazdır

}

Başka

{

top = ilk + 1

yığın [üst] = öğe

}

son

POP Operasyonu

POP, yığının en üstündeki öğeyi silmek anlamına gelir. Pop işlemi durumunda, yığının başlangıçta boş olup olmadığını kontrol etmeliyiz. Yığın başlangıçta boşsa, bir alttan taşma durumu oluşur. Yığın boş olduğunu varsayalım, yine de yığındaki öğeleri patlatmak istiyorsunuz, ancak yığında hiç öğe olmadığında, yığının yetersiz kalmasına neden oluyor.

Pop işlemi durumunda alttan taşma kontrol edilmelidir. Pop işleminde, yığında atılması veya silinmesi gereken en üst öğe ne olursa olsun, hangi öğenin çıkarılacağını belirtmeye gerek yoktur, varsayılan olarak en üstteki öğe açılır. Pop işleminin algoritması aşağıda gösterilmiştir.

pop (yığın [], üst, öğe)

eğer (üst == - 1)

{

'alttan taşma' yazdır

}

Başka

{

öğe = yığın [üst]

top = ilk 1

}

Misal

Öğeler sırasıyla A, B, C, D, E olarak eklenir, beş öğeden oluşan yığını temsil eder. Şekil (a) 'da, yığındaki' A 'öğesini itmek istiyoruz, sonra üst sıfır olur (üst = 0), benzer şekilde' B 'öğesi itildiğinde üst = 1,' C 'öğesi itildiğinde üst = 2 itilir, 'D' öğesi itildiğinde top = 3 ve 'E' öğesi itildiğinde top = 4 olur.

Yani aldığım öğeler yığına yerleştirilirse, şimdi yığın dolu. Başka bir öğeyi itmek istiyorsanız, yığında yer yoktur, bu nedenle taşma olduğunu gösterir. Şimdi, 'E' öğesini açmak istiyorsanız, önce silinmesi gereken yığın dolu. İtme işlemi aşağıdaki şekilde gösterilmektedir.

İtme İşlemi

İtme İşlemi

Yığındaki öğeleri silmek için pop işlemini kullanmalıyız. Bu nedenle, pop () 'dan bahsedin, popta argümanlar yazmayın çünkü varsayılan olarak en üstteki öğeyi siler. İlk 'E' öğesi silinir sonraki 'D' öğesi… .. 'A'. En üstteki öğeler silindiğinde, en üstteki değer azalır. Top = -1 olduğunda, yığın yetersizliği gösterir. Pop işlemi aşağıdaki şekilde gösterilmektedir.

POP Operasyonu

POP Operasyonu

Yani bu, push ve pop işlemi kullanılarak elemanların yığına nasıl eklendiğinin ve silindiğinin açıklamasıdır.

Uygulamalar

Yığın / yığın işaretçisinin uygulamaları

  • Dize ters çevirme
  • Dengeli parantez
  • UNDO / PARMAK
  • Aktivasyon kayıtları için sistem yığını
  • Infix, önek, sonek, ifade

SSS

1). Koldaki yığın işaretçisi nedir?

Yığın işaretçisi kaydı (R13), ARM'deki etkin yığına işaretçi olarak kullanılır.

2). Yığın işaretçisi neden 16 bit?

Yığın işaretçisi (SP) ve önceki konumu saklamak için kullanılan program sayacı (PC) ve bellek konumu adresi 16 bittir, bu nedenle yığın işaretçisi (SP) de 16 bittir.

3). Yığın işaretçisinin rolü nedir?

Yığın işaretçisinin (SP) rolü, yığındaki öğenin üstünü göstermektir.

4). 8085'te hangi yığın kullanılır?

8085'te kullanılan yığın, Son Giren İlk Çıkar'tır (LIFO).

5). Yığın işaretçisi bir kayıt mı?

Evet, yığın işaretçisi (SP), her zaman yığındaki öğenin en üstünü gösteren bir adres kaydıdır.

Bu yazıda nedir