LIFO (Last In First Out) koleksiyonu olan stack son giren datanın ilk çıktığı bir veri yapısıdır. Stack, parserları hızlı bir şekilde geliştirmemize ve karmaşık özyineli algoritmaları değiştirmemize yardımcı olabilir. Yığın genel bir tiptir – depolanan öğe tipini belirtmeliyiz. Stacklere “Push” ile eleman eklenir, “Pop” ile son eklenen eleman çıkarılır. “Peek” ile ise son eklenen eleman okunur. Stackleri foreach döngüsünde de kullanabiliriz. Aşağıdaki kodda int tipinde yeni stack oluşturulmuş ve push ile sayılar eklenmiş. c# Stack sınıfına System.Collections.Generic Arayüzünden ulaşılır.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Stack stack = new Stack();
stack.Push(100);
stack.Push(1000);
stack.Push(10000);
Console.WriteLine(stack.Peek());//10000
Console.WriteLine(stack.Pop());//10000
Console.WriteLine(stack.Pop());//1000
stack.Push(1);
Console.WriteLine(stack.Peek());//1
}
}
Aşağıdaki kodda ise stackte depolanmış eleman sayısının “Count” ile ekrana basılması ve “Clear” ile stackin temizlendiğini görüyorsunuz.
int count = stack.Count;
Console.WriteLine(count);//2
stack.Clear();
Console.WriteLine(stack.Count);//0
String tipindeki arrayyin elemanlarını örnekteki gibi bir stacka attığımızda dizinin son elemanı stacka son eklenmiş sayılıyor ve döngüde ilk o çıkıyor. “Contains” ise parametre olarak verilen değerin stackte bulunup bulunmadığını kontrol edip true ya da false döndürüyor.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
string[] values = { "Me", "Ka", "It" };
var stack = new Stack(values);
foreach (string value in stack)
{
Console.WriteLine(value);
}//It//Ka//Me
bool contains = stack.Contains("It");
Console.WriteLine(contains);//true
}
}