Std :: stack nedir?
Yığın, LIFO (Son Giren İlk Çıkar) tekniğine dayalı olarak çalışan bir veri yapısıdır. Std :: stack, öğelerin yalnızca bir uçtan eklenmesine ve kaldırılmasına izin verir.
Std :: stack sınıfı bir kap bağdaştırıcısıdır. Konteyner nesneleri, benzer bir veri türündeki verileri tutar. Çeşitli sıralama kaplarından bir yığın oluşturabilirsiniz. Herhangi bir kap sağlanmadıysa, varsayılan olarak deque konttaine kullanılacaktır. Kapsayıcı bağdaştırıcıları yineleyicileri desteklemez, bu nedenle verileri işlemek için kullanılamaz.
Bu C ++ eğitiminde öğreneceksiniz
- Std :: stack nedir?
- Yığın Sözdizimi
- Üye Türleri
- Yığın İşlemleri
- Yığın Uygulaması
- push () ve pop ()
- boş (), boyut (), üst ()
- yerleştir () ve takas ()
- STL'de yığın
Yığın Sözdizimi
Yığın oluşturmak için kodumuza
template> class stack;
- Tür - std :: yığında bulunan öğenin türüdür. Herhangi bir geçerli C ++ türü veya hatta kullanıcı tanımlı bir tür olabilir.
- Kapsayıcı - temeldeki kapsayıcı nesnesinin türüdür.
Üye Türleri
Yığın üye türleri şunlardır:
- değer_türü- İlk şablon parametresi T, öğe türlerini belirtir.
- container_type- İkinci şablon parametresi olan Container. Temeldeki kapsayıcı türünü belirtir.
- size_type- İşaretsiz integral türü.
Yığın İşlemleri
Bir C ++ yığını aşağıdaki temel işlemleri destekler:
- push - Yığına bir öğe ekler / iter.
- pop - Bir öğeyi yığından kaldırır / çıkarır.
- peek - Yığının en üstteki öğesini çıkarmadan döndürür.
- isFull - Bir yığının dolu olup olmadığını kontrol eder.
- isEmpty - Bir yığının boş olup olmadığını kontrol eder.
Yığın Uygulaması
Adım 1) Başlangıçta boş bir yığınımız var. Boş bir yığının tepesi -1 olarak ayarlanmıştır.
Adım 2) Ardından, elementi 5 yığının içine ittik. Yığının tepesi, öğe 5'i gösterecektir.
Adım 3) Ardından, elemanı 50 yığının içine ittik. Yığının tepesi kayar ve 50 elemanına işaret eder.
Adım 4) Daha sonra üstteki elemanı yığından kaldırarak bir pop işlemi gerçekleştirdik. 50 elemanı yığından fırlatılır. Yığının tepesi şimdi 5. elemanı işaret ediyor.
push () ve pop ()
Stack :: push () işlevleri yığının en üstüne yeni öğe ekler. Yerleştirmeden sonra yığın boyutu 1 artar. İşlev şu sözdizimini alır:
stack.push(value)
Değer, yığına eklenecek öğedir.
Stack :: pop () işlevi yığının en üstteki öğesini kaldırır. Bu, yığının en yeni öğesidir. Çıkardıktan sonra yığın boyutu 1 küçültülür. Fonksiyon söz dizimi şöyledir:
stack.pop()
Fonksiyon hiçbir parametre almaz.
Örnek 1:
#include#include using namespace std;int main() {stack st;st.push(10);st.push(20);st.push(30);st.push(40);st.pop();st.pop();while (!st.empty()) {cout << ' ' << st.top();st.pop();}}
Çıktı:
İşte kodun bir ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için iostream başlık dosyasını kodumuza ekleyin.
- İşlevlerini kullanmak için yığın başlık dosyasını kodumuza dahil edin.
- Sınıflarını çağırmadan kullanmak için std ad alanını kodumuza dahil edin.
- Main () işlevini çağırın. Program mantığı bu fonksiyona eklenmelidir.
- Tamsayı değerlerini saklamak için bir yığın st oluşturun.
- 10 değerini yığına eklemek için push () işlevini kullanın.
- 20 değerini yığına eklemek için push () işlevini kullanın.
- 30 değerini yığına eklemek için push () işlevini kullanın.
- 40 değerini yığına eklemek için push () işlevini kullanın.
- Yığından en üstteki öğeyi, yani 40'ı kaldırmak için pop () işlevini kullanın. Üst öğe şimdi 30 olur.
- Yığından en üstteki öğeyi, yani 30'u kaldırmak için pop () işlevini kullanın. Üst öğe şimdi 20 olur.
- Yığının boş olup olmadığını kontrol etmek için while döngüsü ve empty () işlevi kullanın. ! DEĞİL operatörüdür.
- Yığının mevcut içeriğini konsolda yazdırma.
- Yığın üzerindeki pop () işlevini çağırın.
- While döngüsünün gövdesinin sonu.
- Main () işlev gövdesinin sonu.
boş (), boyut (), üst ()
Yığınlar, yığın ve değerleriyle oynamak için kullanabileceğiniz yerleşik işlevlere sahiptir. Bunlar şunları içerir:
- empty () - bir yığının boş olup olmadığını kontrol eder.
- size () - yığının boyutunu, yani bir yığındaki öğe sayısını döndürür.
- top () - üstteki yığın öğesine erişir.
Örnek 2:
#include#include using namespace std;void createStack(stack mystack){stack ms = mystack;while (!ms.empty()){cout << '\t' << ms.top();ms.pop();}cout << '\n';}int main(){stack st;st.push(32);st.push(21);st.push(39);st.push(89);st.push(25);cout << "The stack st is: ";createStack(st);cout << "\n st.size() : " << st.size();cout << "\n st.top() : " << st.top();cout << "\n st.pop() : ";st.pop();createStack(st);return 0;}
Çıktı:
İşte kodun bir ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için iostream başlık dosyasını kodumuza ekleyin.
- İşlevlerini kullanmak için yığın başlık dosyasını kodumuza dahil edin.
- Sınıflarını çağırmadan kullanmak için std ad alanını programımıza dahil edin.
- Mystack yığınını oluşturmak için kullanabileceğimiz createStack fonksiyonunu oluşturun. Yığın bir dizi tamsayı tutacaktır.
- CreateStack işlevinin gövdesinin başlangıcı.
- Mystack veri türünün bir örneğini oluşturun ve ona ms adını verin.
- Yığının boş olup olmadığını kontrol etmek için while döngüsünü ve empty () işlevini kullanın.
- While döngüsünün gövdesinin başlangıcı.
- Yığının en üstünde depolanan top () işlevini kullanın. \ T karakteri yeni bir sekme oluşturacaktır.
- Yığının en üstündeki öğeyi silmek için pop () işlevini kullanın.
- While döngüsünün gövdesinin sonu.
- Konsolda boş bir satır yazdırın.
- CreateStack işlevinin gövdesinin sonu.
- Main () işlevini çağırın. Program mantığı, main () işlevinin gövdesine eklenmelidir.
- Main () işlevinin gövdesinin başlangıcı.
- Bir yığın nesnesi oluşturun st.
- Öğeyi (32) yığına eklemek için push () işlevini kullanın.
- Öğeyi 21 yığına eklemek için push () işlevini kullanın.
- Öğeyi 39 yığına eklemek için push () işlevini kullanın.
- 89 öğesini yığına eklemek için push () işlevini kullanın.
- Öğeyi 25 yığına eklemek için push () işlevini kullanın.
- Konsolda biraz metin yazdırın.
- Yukarıdaki ekleme işlemlerini yığına yürütmek için createStack işlevini çağırın.
- Diğer metinlerle birlikte konsolda yığının boyutunu yazdırın.
- Konsolda yığının en üstündeki öğeyi yazdırın.
- Konsolda biraz metin yazdırın.
- Yığının en üstündeki öğeyi silin. Daha sonra yığında kalan öğeleri döndürür.
- Yukarıdaki işlemleri yürütmek için createStack işlevini çağırın.
- Program başarılı bir şekilde tamamlandığında değer döndürmelidir.
- Ana fonksiyon gövdesinin sonu ().
yerleştir () ve takas ()
Bunlar diğer dahili yığın işlevleridir:
- emplace () - oluşturur ve yığının en üstüne yeni eleman ekler.
- swap () - Yığın içeriğini başka bir yığının içeriğiyle değiştirir.
Örnek 3:
#include#include #include using namespace std;int main() {stack st1;stack st2;st1.emplace(12);st1.emplace(19);st2.emplace(20);st2.emplace(23);st1.swap(st2);cout << "st1 = ";while (!st1.empty()) {cout << st1.top() << " ";st1.pop();}cout << endl << "st2 = ";while (!st2.empty()) {cout << st2.top() << " ";st2.pop();}}
Çıktı:
İşte kodun bir ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için iostream başlık dosyasını kodumuza ekleyin.
- İşlevlerini kullanmak için yığın başlık dosyasını kodumuza dahil edin.
- İşlevlerini kullanmak için cstdlib başlık dosyasını kodumuza ekleyin.
- Sınıflarını çağırmadan kullanmak için std ad alanını kodumuza dahil edin.
- Main () işlevini çağırın. Program mantığı bu işlevin gövdesine eklenecektir.
- Tamsayı değerlerini depolamak için st1 adlı bir yığın bildirin.
- Tamsayı değerlerini depolamak için st2 adlı bir yığın bildirin.
- St1 adlı yığına 12 tamsayısını eklemek için emplace () işlevini kullanın.
- 19 tamsayısını st1 adlı yığına eklemek için emplace () işlevini kullanın.
- 20 tamsayısını st2 adlı yığına eklemek için emplace () işlevini kullanın.
- 23 tamsayısını st2 adlı yığına eklemek için emplace () işlevini kullanın.
- İki yığının, st1 ve st2'nin içeriğini değiştirmek için swap () işlevini kullanın. St1 yığınının içeriği st2 yığınına taşınmalıdır. St2 yığınının içeriği st1 yığınına taşınmalıdır.
- Konsolda biraz metin yazdırın.
- St1 yığının boş olup olmadığını kontrol etmek için while deyimini ve empty () işlevini kullanın.
- St1 yığını içeriğini konsolda yazdırın. "", Konsolda yazdırılırken yığın öğeleri arasına boşluk ekler.
- En üstteki öğeyi kaldırmak için st1 yığınındaki pop () işlevini çalıştırın.
- While ifadesinin gövdesinin sonu.
- Konsolda biraz metin yazdırın. Endl, bitiş satırı için bir C ++ anahtar kelimesidir. Oradan yazdırmaya başlamak için fare imlecini bir sonraki satıra hareket ettirir.
- St2 yığınının boş olup olmadığını kontrol etmek için while deyimini ve empty () işlevini kullanın.
- Konsolda st2 yığını içeriğini yazdırın. "", Konsolda yazdırılırken yığın öğeleri arasına boşluk ekler.
- En üstteki öğeyi kaldırmak için st2 yığınındaki pop () işlevini yürütün.
- While ifadesinin gövdesinin sonu.
- Main () işlevinin gövdesinin sonu.
STL'de yığın
STL (Standart Şablon Kitaplığı), ortak C ++ veri yapıları sağlayan şablon sınıflarıyla birlikte gelir. Bu nedenle, STL'de bir yığın da uygulanabilir. Bu kitaplığı kodumuza dahil ediyoruz ve bir yığın tanımlamak için kullanıyoruz.
stackst;
Yukarıdaki sözdizimi, T veri türündeki öğelere bir yığın st bildirir.
Örnek 3:
#include#include #include using namespace std;int main() {stack st;st.push(12);st.push(19);st.push(20);cout << st.top();cout << st.size();}
Çıktı:
İşte kodun bir ekran görüntüsü:
Kod Açıklaması:
- İşlevlerini kullanmak için iostream başlık dosyasını kodumuza ekleyin.
- İşlevlerini kullanmak için yığın başlık dosyasını kodumuza dahil edin.
- İşlevlerini kullanmak için cstdlib başlık dosyasını kodumuza ekleyin.
- Sınıflarını çağırmadan kullanmak için std ad alanını kodumuza dahil edin.
- Main () işlevini çağırın. Program mantığı bu işlevin gövdesine eklenmelidir.
- Tamsayı verilerini depolamak için bir yığın st bildirin.
- Öğe 12'yi yığına ekleyin.
- 19 öğesini yığına ekleyin.
- Öğeyi 20 yığına ekleyin.
- Konsolda yığının en üstündeki öğeyi yazdırın.
- Konsolda yığının boyutunu yazdırın.
- Main () işlevinin gövdesinin sonu.
Özet:
- Yığın, LIFO (Son Giren İlk Çıkar) tekniğine dayalı olarak çalışan bir veri yapısıdır.
- Std :: stack yalnızca öğelerin bir uçtan eklenmesine ve kaldırılmasına izin verir.
- Std :: stack sınıfı, benzer veri türündeki öğeleri tutan bir kap bağdaştırıcısıdır.
- Çeşitli sıralama kaplarından bir yığın oluşturulabilir.
- Bir kapsayıcı sağlamazsanız, varsayılan olarak deque kapsayıcı kullanılacaktır.
- Push () işlevi yığına öğe eklemek içindir.
- Pop () işlevi, en üstteki öğeyi adımdan kaldırmak içindir.
- Empty () işlevi, bir yığının boş olup olmadığını kontrol etmek içindir.