Bu makalede, C++ programlama dilinde sıkça kullanılan STL kütüphanesi içerisinde yer alan diziler ve vektörler hakkında bilgi verilmektedir Diziler, sıralı bir şekilde saklanan ve aynı türdeki verilerin bulunduğu bir koleksiyondur Vektörler ise dinamik boyutlara sahip dizilerdir ve öğeleri bellekte sıralı bir şekilde tutarlar Push_back, pop_back ve reserve gibi bazı vektör fonksiyonları, vektörün kullanımını kolaylaştırır Bu makalenin amacı, STL koleksiyonları hakkında bir genel bakış sunmak ve bu koleksiyonların kullanımları hakkında bilgi vererek programlama çözümleri oluşturmaktır

STL (Standard Template Library), C++ programlama dilinde sıkça kullanılan bir kütüphanedir. Bu kütüphane, farklı yapıları (dizi, vektör, liste, haritalar, kuyruklar ve yığınlar) içerisinde barındıran ve bu yapıların kullanımını kolaylaştıran bir araçtır. Bu makale, STL koleksiyonları hakkında bir genel bakış sunmakta ve bu koleksiyonların kullanımları hakkında bilgi vermektedir.
Bu kütüphane, C++ programlama dilinde sıklıkla kullanılan standart yapıları yeniden yazmaya gerek kalmadan kullanma imkanı sunar. Koleksiyonlar, belirli bir veri tipindeki elemanları içeren yapılardır. STL'deki koleksiyonlar, başka programlama dillerindeki koleksiyonlara benzer bir şekilde kullanılabilir. Ayrıca, herhangi bir STL koleksiyonu veri yapısı, istenilen özellik için temel bir altyapı sağlar. Bu sayede, programcılar verilerin tutulduğu veri yapılarını doğrudan işleyebilir.
Bu makalede, diziler, vektörler, listeler, haritalar, kuyruklar ve yığınlar gibi en sık kullanılan STL koleksiyonları hakkında bilgi verilecektir. Ayrıca, her bir koleksiyonun fonksiyonları, kullanım alanları ve örnekleri değerlendirilecektir. Amacımız, bu çeşitli veri yapılarının kullanımını öğrenerek programlama çözümleri oluşturmaktır.
Diziler (Arrays)
Diziler (Arrays) programlama dillerinde sıklıkla kullanılan veri yapısıdır. Sıralı şekilde saklanan ve aynı türdeki verileri içeren değişkenlerin bulunduğu koleksiyonlardır. Dizi değişkenlerinin her bir elemanı, dizinin adıyla birlikte ‘[ ]’ işaretiyle erişilir. Örneğin a[0] ilk eleman olarak kullanılabilir.
Dizilerin tanımının yanı sıra, ilgili veri yapısının nasıl kullanılacağı da oldukça önemlidir. Diziler içerisindeki elemanlar, sıradan bir değişken gibi kullanılabildiği gibi, farklı hesaplamalar ve işlemler için kullanım alanı da mevcuttur. İlgili veri yapısı ile ilgili örnekler ve kullanım senaryoları, programlama alanında uzmanlaşmış kişiler tarafından detaylı bir şekilde incelenmeli ve öğrenilmelidir.
Dizilerin kullanımı, sıklıkla matris işlemleri veya veri işleme işlemleri için önemlidir. Diziler, bellek yönetimi açısından da önemli bir araç olarak kullanılmaktadır. Bu nedenle, Uzmanlar, ilgili veri yapısının kullanımı konusunda genel bir bilgi birikimine sahip olmalıdır.
Dizilerin yapısını daha iyi anlamak için, düzenli bir tablo şeklinde veya noktalama işaretleriyle örnekleri kullanarak veri görselleştirilebilir. Ayrıca, daha büyük veri setleri kullanıldığı zaman, algoritmayı daha hızlı ve optimize edebilmek için özel tekniklerle değişebilir. Bu nedenle, programlama dili bilgisi, ilgili veri yapısının kullanımı konusunda yeterli düzeyde olmalıdır.
Vektörler (Vectors)
Vektörler (Vectors), C++ programlama dilinde en çok kullanılan STL koleksiyonlarından biridir. Vektörler, dinamik boyutlara sahip dizilerdir ve dizilere göre pek çok avantaj sağlarlar. Vektör, öğelerin bellekte sıralı bir şekilde tutulduğu bir veri yapısıdır.
Vektörler, 'vector' kütüphanesi kullanılarak tanımlanır. Bu kütüphane iki temel fonksiyona sahiptir:push_back() ve pop_back(). push_back() fonksiyonu, vektöre yeni bir eleman eklemek için kullanılırken, pop_back() fonksiyonu ise son elemanı vektörden silmek için kullanılır. Vektörün boyutunu önceden belirlemek gerekmese de, performansını artırmak için reserve() fonksiyonu kullanılabilir.
Fonksiyon | Açıklama |
---|---|
push_back() | Yeni bir eleman ekler |
pop_back() | Son elemanı siler |
reserve() | Vektörün boyutunu önceden belirler |
Vektörlerin kullanım alanları oldukça geniştir. Elemanları sıralı bir şekilde tuttuklarından, sıralama işlemi gerektiren işlemler için kullanılabilirler. Ayrıca vektörler, birçok algoritmanın uygulanmasını da sağlarlar.
Vektör Fonksiyonları
Vektörler (Vectors), C++ dilinde sıklıkla kullanılan bir STL koleksiyon türüdür. Bu koleksiyonun kullanımında, push_back(), pop_back() ve reserve() gibi bazı fonksiyonlar bulunmaktadır. push_back() fonksiyonu, vektörün sonuna bir öğe ekler. Örneğin, vector
Bir diğer fonksiyon olan reserve(), vektörün sahip olduğu öğe sayısını ayarlamak için kullanılır. Bu sayede, vektör dinamik olarak boyutu genişletmek yerine, önceden belirlenen boyutta yer ayırabilir. Vektörün boyutunu ayarlamak için kullanabileceğiniz örnek kod satırı ise şöyle görünür:
vector | v.reserve(10); |
Yukarıdaki örnekte, vektörün ilk oluşumu gerçekleştirilirken, aynı zamanda vektörün kapasitesi de belirlenmiştir. Bu sayede, vektörde 10 adet öğe saklanabilecek şekilde bir yer ayrılmıştır.
Vektör fonksiyonları, C++ dilinde sıklıkla kullanılan bu koleksiyonu etkin bir şekilde kullanmak için büyük bir avantaj sağlar. Bu fonksiyonların doğru kullanımı, kodların daha hızlı, daha düzenli ve daha okunaklı olmasını sağlar.
Vektör Fonksiyonu Örnekleri
Vektörler, programcılar arasında yaygın kullanılan bir veri yapısıdır. Vektörler, esnek ve verimli bir şekilde veri saklamak için idealdir. İşte, vektör fonksiyonlarının bazı örnekleri:
Fonksiyon | Açıklama |
---|---|
size() | Vektörün boyutunu döndürür. |
at() | Belirtilen konumdaki elemanı döndürür. |
push_back() | Yeni bir eleman vektörün sonuna eklenir. |
pop_back() | Vektörün sonundaki eleman çıkarılır. |
insert() | Belirtilen konuma yeni bir eleman ekler. |
erase() | Belirtilen konumdaki elemanı vektörden kaldırır. |
Bu fonksiyonların hepsi, vektörlerde veri ekleme, çıkarma ve değiştirme işlemlerini gerçekleştirmek için kullanılabilir. Örneğin, aşağıdaki kod parçası, vektörün sonuna yeni bir eleman ekler:
vector<int> v = {1, 2, 3};v.push_back(4);
Bu kod parçası, vektörün sonuna 4 ekleyecektir. Vektörün sonucu: {1, 2, 3, 4}.
Benzer şekilde, pop_back() fonksiyonu, vektörün sonundaki elemanı çıkarır:
vector<int> v = {1, 2, 3, 4};v.pop_back();
Bu kod parçası, vektörün sonundaki elemanı olan 4'ü çıkarır. Vektörün sonucu: {1, 2, 3}.
insert() fonksiyonu, belirtilen konuma yeni bir eleman ekler:
vector<int> v = {1, 2, 3};v.insert(v.begin() + 1, 5);
Bu kod parçası, vektörün ikinci elemanına yeni bir eleman olan 5 ekler. Vektörün sonucu: {1, 5, 2, 3}.
Sonuç olarak, vektörler programcılar arasında popüler bir veri yapısıdır ve birçok faydalı fonksiyona sahiptir. Bu fonksiyonlar, veri ekleme, çıkarma ve değiştirme işlemlerini gerçekleştirmek için kullanılabilir.
Vektör ve Dizi Karşılaştırması
Vektörler, dizilere göre birçok avantaja sahiptir. Diziler, sabit boyutlu ve işlem kolaylığı sağlar, ancak vektörler, boyutları dinamik olarak değiştirilebilir ve hafızaları yönetilebilir. Vektörler, bellek yönetimiyle birlikte çalışır ve boyutu gerektiği gibi genişletilip daraltılabilir, böylece gereksiz bellek kullanımı önlenir.
Vektörler, dizilerle karşılaştırıldığında daha fazla işlevsellik sağlar ve bu nedenle daha yaygın olarak kullanılır. Ayrıca, verilerin dizide depolanmasıyla karşılaştırıldığında, vektörlerin daha etkili bir şekilde aranabildiği ve sıralanabildiği bilinmektedir.
Aşağıdaki tabloda, vektörlerin dizilere göre avantajları özetlenmiştir:
Vektörler | Diziler |
---|---|
Bellek yönetimi | Sabit boyutlu |
Boyut değişkenliği | İşlem kolaylığı |
Birçok işlevsellik sağlar | Sadece temel işlevler |
Bu nedenle, vektörler özellikle büyük verilerle çalışırken daha etkili bir seçimdir. Bununla birlikte, her durumda dikkatlice değerlendirilmelidir.
Vektör Sınırlamaları
Vektörler kullanışlı ve popüler olsalar da, bazı sınırlamalara sahiptirler. Bu sınırlamalar, vektörlerin ne zaman kullanılabileceğini belirlemede önemli bir faktör olabilir.
İlk sınırlama, sıralama işlemleridir. Vektörler sıralandığında, aynı anda tek bir öğe taşınır. Bu nedenle büyük veri kümeleri ile çalışırken sıralama işlemi oldukça yavaş olabilir. Bu durumda, haritalar gibi başka koleksiyonlar daha hızlı işlemler yapabilirler.
İkinci sınırlama, silme işlemleridir. Vektörler, öğeleri silmek için pop_back() veya erase() fonksiyonları kullanılarak değiştirilebilir. Ancak, bu işlem, vektörün arkasındaki tüm öğeleri yeniden sıralamak için çok sayıda işlem gerektirir. Bu nedenle, vektörlerin içindeki öğeleri sıklıkla silmek yerine, listeden daha iyi bir başka seçenek olarak kuyruklar ve yığınlar kullanılabilir.
Bununla birlikte, vektörlerin kullanımı da oldukça avantajlıdır. Belli bir veri kümelerinin baştan tahmin edilemeyen bir şekilde büyüyeceği durumlarda, vektörlerin büyüklüğünü dinamik olarak ayarlayabilme özellikleri bulunur. Bu sayede tüm veri kümesi sıkıştırılamasa bile, kullanıcının bellek kaynakları daha optimum biçimde kullanılabilecektir.
Özetle, vektörlerin avantajları çok yönlü ve kullanışlıdır, ancak büyük veri kümeleri ve sıralama veya silme işlemleri gerektiren durumlarda, başka koleksiyonlar kullanmanız daha uygun olacaktır.
Listeler (Lists)
Listeler, STL koleksiyonları arasında sıklıkla kullanılan bir diğer veri yapısıdır. Listeler, belirli bir sıralama olmaksızın elemanları saklarlar. Bu sebeple, ekleme, silme ve arama işlemlerinde vektörlere göre daha etkilidirler.
Listeler, birçok farklı veri tipini depolayabilirler. Bunlar arasında sayılar, metinler, karakterler veya hatta sınıf örnekleri de yer alabilir. Listenin elemanları birbirine düğümlerle bağlıdır. Her düğüm, elemanın kendisini ve bir sonraki ve bir önceki elemanın adreslerini içerir.
Listelerin kullanım alanları oldukça geniştir. Özellikle yığıt, kuyruk, sıralama ve hesaplamalı geometri problemleri için kullanılabilmektedirler. Listelerin avantajı, eleman ekleme veya silme sürecinde verilen bellek boyutunu genişletmeleridir. Bu yüzden veri yapısındaki elemanlara dokunulmadan kalan bloklar kullanıma açık kalır.
Listelerde eleman ekleme ve silme işlemleri oldukça hareketlidir. Bu tarz işlemlerde liste oluştururken, elemanları sırasına göre yerleştirmek yerine, belirli bir sayıda öğe kabul edip sırasını düzenlemenin daha mantıklı olacağı unutulmamalıdır.
Listeler için önceden tanımlanmış birkaç temel fonksiyon bulunur. push_front(), pop_front() ve sort() bu fonksiyonlardan bazılarıdır. push_front() fonksiyonu, listenin başına yeni bir eleman eklemek için kullanılırken pop_front() fonksiyonu, listenin başındaki elemanı kaldırmak için kullanılır. Diğer yandan sort() fonksiyonu, listeyi artan veya azalan sıraya göre sıralar.
Listelerin avantajları fark edilmesi açısından bir örnek vermek gerekirse, elimizde 100000 elemanlı bir veri olsun ve bu veriyi sıralamak isteyelim. Eğer bu işlemi bir dizide yaparsak, her swap işleminde oldukça fazla bir işlem gücü kullanmak zorunda kalırız. Buna karşın listenin sort() fonksiyonunu kullanmak, swap işlemleriyle uğraşmadan işlemi gerçekleştirmemize olanak tanıyabilir.
Liste Fonksiyonları
Listeler, birçok veri türü ile işlem yaparken özellikle faydalı hale gelir. Kullanıcılar, listeleri diğer koleksiyonlardan farklı özelliklere sahip oldukları için benimserler. Liste fonksiyonları, listelerdeki verilerin yönetilmesini kolaylaştırmak için özel olarak tasarlanmıştır. İşte liste fonksiyonlarından bazıları:
push_front() | Listeye yeni bir eleman ekler ve listenin başına ekler. Bu işlevi kullanarak veri eklemek, liste boyutunu değiştirir. |
pop_front() | Listeden ilk elemanı kaldırır ve listedeki tüm diğer elemanların konumunu bir öne taşır. Bu işlevi kullanarak veri silmek, liste boyutunu azaltır. |
sort() | Listedeki elemanları küçükten büyüğe veya büyükten küçüğe doğru sıralayabileceğiniz bir işlevdir. Sort fonksiyonu, liste üzerinde gerçek zamanlı bir sıralama algoritması kullanır. |
Listelerin kullanımı, büyük miktarda veri taşıyan ve sık sık düzenlenen işlemlerle özellikle faydalı hale gelir. Push_front ve pop_front fonksiyonu, kodunuzu daha verimli hale getirmenize yardımcı olabilir. Sort fonksiyonu, sıralama işlemini hızlandırabilir ve listeleri daha kullanışlı hale getirebilir.
Haritalar (Maps)
Haritalar (Maps) genellikle anahtar-değer çiftleri şeklinde depolanan verileri saklamak için kullanılır. Haritaların kullanım alanları oldukça geniştir. Örneğin, bir kelimenin karşılığı gibi farklı ikili ilişkileri saklamak için kullanılabilirler. Haritalar aynı zamanda veri tabanı işlevi de görebilir. Bu sayede büyük miktarlardaki verileri etkili bir şekilde yönetebilirsiniz.
Haritaların tanımı ise oldukça basittir. Bir harita, bir anahtar-değer çiftlerinin koleksiyonu olarak tanımlanabilir. Anahtarlar, farklı veri tiplerinde olabilirken, değerler de farklı tiplerde olabilir. Örneğin, bir harita içinde hem int hem de string anahtarlarla char veya float değerler saklanabilir.
Haritalar, diğer STL koleksiyonlarının aksine, arama işlemleri için son derece hızlı ve etkilidir. Bunun sebebi, haritaların arama işlemlerinin O(1) zamanda gerçekleşmesidir. Bu sayede, büyük boyutlu verileri arama ve saklama işlemleri için oldukça kullanışlıdır.
Haritaların kullanımının yanı sıra, temel harita fonksiyonları bilinmelidir. Temel fonksiyonlar arasında insert(), erase() ve find() yer alır. Bu temel fonksiyonlar sayesinde, haritalar üzerinde etkili bir şekilde işlemler yapabilirsiniz.
Insert(), bir anahtar-değer çiftini haritaya eklemek için kullanılır. Örneğin, bir kelimenin karşılığı olan bir sayıyı haritaya eklemek istediğinizde, insert() fonksiyonunu kullanarak bu işlemi gerçekleştirebilirsiniz.
Erase(), belirli bir anahtara sahip olan çifti haritadan silmek için kullanılır. Bu fonksiyon, silmek istediğiniz anahtarı parametre olarak alır ve bu anahtar ile eşleşen çifti haritadan siler.
Find(), bir anahtarın değerini bulmak için kullanılır. Bu fonksiyon, bir anahtarın karşılığı olan değeri döndürür. Eğer anahtar haritada bulunmazsa, find() fonksiyonu NULL değeri döndürür.
Haritalar, çok farklı senaryolarda kullanılabilen son derece etkili bir veri yapısına sahip olduğu için, programcıların profesyonel çalışmalarında vazgeçilmez bir araçtır.
Harita Fonksiyonları
Haritalar, bir anahtar-değer çiftleri koleksiyonudur ve bir haritayı kullanırken, anahtarların değerlerini bulmak için kullanılan bir işlev fonksiyonu sağlamalısınız. Temel harita fonksiyonları arasında, aşağıdaki işlevler bulunmaktadır:
- insert(): Haritaya bir anahtar-değer çifti eklemek için kullanılır.
- erase(): Bir anahtarın değerlerini haritadan kaldırmak için kullanılır.
- find(): Verilen bir anahtarın değerlerini bulmak için kullanılır. Eğer anahtar bulunamazsa, harita sonunda bulunan değerin konumunu verir.
insert() işlevi, harita içindeki anahtarları ve değerleri tutmak için kullanılırken, erase() işlevi değerleri silmek için kullanılır. find() işlevi, harita içinde verilen bir anahtarı arar ve değerlerini döndürür. Haritada özellikle kullanışlı olan şeylerden biri, anahtarları değerleriyle eşleştirebileceğiniz, birden çok baş veri türüne karşılık gelen çiftleri saklamak için kullanmaktır.
Ayrıca, bir harita genellikle düzgün bir şekilde sıralanmış değildir. Ancak, sıralanmış bir harita kullanmak istiyorsanız, map kullanabilirsiniz. Haritada olduğu gibi, anahtarlar bir sıralama kriteri olarak kullanılabilir ve haritanın değerleri anahtarlarla ilişkilendirilebilir. Bu nedenle, sıralı bir harita kullanmanın hem anahtarları hem de değerleri aramak için daha kolay ve daha hızlı bir yol olabileceğini söyleyebiliriz.
Kuyruklar (Queues) ve Yığınlar (Stacks)
Kuyruklar ve yığınlar, veri yapılarından en popülerleridir. Kuyruklar ve yığınlar, verilerin depolanması ve işlenmesi için kullanılan özel veri yapılarıdır. Kuyruklar, ilk gelen ilk hizmet (FIFO) prensibi ile çalışırken, yığınlar son gelen ilk hizmet (LIFO) prensibine dayanır.
Kuyrukların en yaygın kullanım alanı, işlem sırasını takip etmek için kullanılan işlemci yönetimi için kullanılan algılamalardır. Yığınlar ise fonksiyon çağrıları ile kullanılır ve bu nedenle yazılım geliştirme için son derece önemlidir.
Kuyruklar ve yığınlar hem STL koleksiyonları içinde hem de programlama dilleri arasında yaygın olarak kullanılırlar. Çok küçük bir depolama alanı gerektirdikleri için, uygulamalar için önemli bir etkiye sahiptirler.
Kuyruk | Yığın |
---|---|
Bir öğe eklemek için push() kullanılır. | Bir öğe eklemek için push() kullanılır. |
İlk öğeyi kaldırmak için pop() kullanılır. | Son eklenen öğeyi kaldırmak için pop() kullanılır. |
İlk öğeyi görmek için front() kullanılır. | Üstteki öğeyi görmek için top() kullanılır. |
Kuyruklar ve yığınlar, depolamak istediğimiz veri öğelerinin boyutunu dikkate aldığından birçok durumda avantajlıdır. Bir diziye kıyasla, kuyruklar ve yığınlar hem daha hızlı hem de daha esnektir. Bu nedenle, geliştiriciler genellikle kuyruklar ve yığınların sunduğu işlevselliği kullanarak programlarını daha hızlı ve etkili hale getirirler.
Genel olarak, kuyruklar ve yığınlar önemli veri yapılarıdır. Temel kullanımları sırasıyla FIFO ve LIFO prensiplerine dayanır, ancak birçok farklı kullanım alanı vardır. Kuyruklar ve yığınlar, programlama toplulukları arasında popüler olmaya devam etmektedir ve geliştiriciler için son derece önemlidir.
Kuyruk Fonksiyonları
Kuyruk, ilk giren ilk çıkar (FIFO) yapısına sahip koleksiyonlardan biridir ve önemli bir veri yapısıdır. C++ STL Kuyruk sınıfı, birkaç önemli fonksiyon içerir. İlk olarak, ```push()``` fonksiyonu, kuyruğun sonuna bir öğe ekler. Kuyruğa yeni bir öğe eklemek istediğimizde ```push()``` fonksiyonu kullanılır. Örneğin, bir restoranın müşteri hizmetleri ekibi, siparişleri almak için bir kuyruk kullanabilir. Sipariş verildiğinde, ```push()``` fonksiyonu kullanılarak kuyruğa yeni bir sipariş eklenir.
İkinci olarak, ```pop()``` fonksiyonu, kuyruğun başındaki öğeyi kuyruktan kaldırır. Kuyruktan öğe çıkarmak istediğimizde ```pop()``` fonksiyonunu kullanırız. Örneğin, bir bankada ATM'de bekleyen bir kuyruktaki ilk kişi, para çekmek için kuyruğun önündeki ATM'ye gider. Bu durumda, ```pop()``` fonksiyonu kullanılarak uygun kişi kuyruktan çıkarılabilir.
Son olarak, ```front()``` fonksiyonu, kuyruğun başındaki öğeyi döndürür ancak kuyruktan kaldırmaz. Kuyruğun başındaki öğeyi almak istediğimizde ```front()``` fonksiyonunu kullanırız. Örneğin, bir tema parkındaki bir kuyrukta bekleyen kişiler, kuyruktan öğrenmek istedikleri bir bilgi için önlerindekileri beklemek yerine ```front()``` fonksiyonunu kullanarak bilgiyi öğrenebilirler.
Aşağıdaki tablo, C ++ STL Kuyruk sınıfındaki temel fonksiyonları ve tanımlarını gösterir:
Fonksiyon | Açıklama |
---|---|
push() | Kuyruğun sonuna öğe ekler |
pop() | Kuyruğun başındaki öğeyi kuyruktan kaldırır |
front() | Kuyruğun başındaki öğeyi döndürür ancak kuyruktan kaldırmaz |
C ++ STL Kuyruk sınıfı, birçok proje ve uygulamada kullanılan önemli bir veri yapısıdır. Kuyruklar, özellikle sıraya göre bir sıralama gerektiğinde kullanışlıdır. Fonksiyonları kullanmak, C ++ öğrenirken kuyrukların temel yönlerini anlamaya yardımcı olabilir.
Yığın Fonksiyonları
Yığınlar, son giren öğenin ilk çıkmasını sağlayan veri yapılardır. Bu nedenle yığın yapıları, verilerin belirli bir öncelik sırasına göre işlenmesi gereken uygulamalarda sıkça kullanılır. Yığın fonksiyonları, yığın üzerinde belirli işlemler yapmayı sağlar.
push(): Yığının tepesine yeni bir öğe ekler. Bu işlem, yığının boyutunu otomatik olarak artırır.
pop(): Yığının tepesindeki öğeyi çıkartır ve yığından siler.
top(): Yığının tepesindeki öğeyi döndürür, ancak yığından çıkartmaz. Bu fonksiyon, yığındaki en üst öğeyi gösterir.
Fonksiyon | Açıklama | Örnek Kullanım |
---|---|---|
push() | Yığının tepesine öğe ekler | stack |
pop() | Yığının tepesindeki öğeyi yığından çıkartır | stack |
top() | Yığının tepesindeki öğeyi döndürür | stack |
Yukarıdaki örnek kullanımlar, yığın üzerindeki işlemleri gerçekleştirmek için kullanılan fonksiyonların nasıl kullanılabileceğini göstermektedir. Yığınlar, veri yapılarındaki son giren ilk çıkar (LIFO) prensibini takip eder. Bu nedenle, yığın üzerinde yapılan tüm işlemler, yığının en tepesindeki öğe ile gerçekleştirilir.