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
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ı
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ü
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 / 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'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
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
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.