Stack<T>, LIFO (Last In, First Out – Son Giren İlk Çıkar) prensibiyle çalışan bir koleksiyondur. Yani, son eklenen eleman ilk çıkarılır. Bir yığın gibi düşünebiliriz; en üste koyduğumuz tabak ilk alınır. “T”, yığında tutacağı veri türünü temsil eder.
Kullanım Alanları
- Geri alma/ileri alma işlemleri (örneğin, metin editörlerinde)
- Depth-First Search (DFS) algoritması uygulamaları
- Parantez eşleştirme kontrolü
- Fonksiyon çağrı yığınını yönetme (derleyici tarafından kullanılır)
Stack<T> Oluşturma ve Eleman Ekleme/Çıkarma
C#
using System;
using System.Collections.Generic;
public class StackOrnegi
{
public static void Main(string[] args)
{
// Boş bir int yığını oluşturma
Stack<int> sayilar = new Stack<int>();
// Eleman ekleme (Push)
sayilar.Push(10);
sayilar.Push(20);
sayilar.Push(30);
// Eleman çıkarma (Pop)
int sonSayi = sayilar.Pop(); // 30 çıkarılır
Console.WriteLine($"Son sayı: {sonSayi}");
foreach (int sayi in sayilar)
{
Console.WriteLine(sayi);
}
}
}Stack<T>’in Özellikleri
- Count: Yığındaki eleman sayısını döndürür.
Queue vs Stack
| Özellik | Queue (Kuyruk) | Stack (Yığın) |
|---|---|---|
| Çalışma Prensibi | FIFO | LIFO |
| Eleman Ekleme | Enqueue | Push |
| Eleman Çıkarma | Dequeue | Pop |
| Kullanım Alanları | Görev sırası, BFS | Geri alma, DFS |
Koleksiyon Seçimi
Hangi koleksiyonu kullanacağınız uygulamanızın gereksinimlerine bağlıdır. Eğer elemanların sırayla işlenmesi gerekiyorsa Queue<T>’yi, son eklenen elemanın ilk işlenmesi gerekiyorsa Stack<T>’yi tercih etmelisiniz.
Kaynak: https://learn.microsoft.com/tr-tr/dotnet/csharp/tour-of-csharp/tutorials/