9 - Yığın (Stack) Veri Yapısı
2025
Bir tabak yığını düşünün:
Yığına dair bu örnekler, yığının yaygın kullanım alanlarının ne kadar geniş olduğunu gösterir.
tepe
işaretçisi NULL
gösterir.tepe
işaretçisi güncellenir.malloc
).onceki
işaretçisini eski tepe
ye bağla.tepe
işaretçisini yeni düğüme güncelle.tepe == NULL
).tepe
işaretçisini bir önceki düğüme kaydır.free
).int peek() {
if (tepe == NULL) {
printf("Hata: Yığın boş! (peek)\n");
return INT_MIN;
}
printf("Yığının tepesindeki eleman (peek): %d\n", tepe->veri);
return tepe->veri;
}
int main() {
printf("--- Yığın İşlemleri Başlangıç ---\n");
printf("Başlangıçta yığın boş mu? %s\n", isEmpty() ? "Evet" : "Hayır");
push(10);
push(20);
push(30);
peek(); // 30
pop(); // 30 çıkarılır
peek(); // 20
pop(); // 20
push(40);
peek(); // 40
pop(); // 40
pop(); // 10
printf("Yığın boş mu? %s\n", isEmpty() ? "Evet" : "Hayır");
pop(); // Hata (yığın boş)
peek(); // Hata (yığın boş)
return 0;
}
Kodun tam hali: https://gist.github.com/ecylmz/87c4ca535e0c832165c91d26f1c7dd1a
push
işlemi başarısız olabilir (isFull kontrolü).pop
, peek
, isEmpty
gibi işlemler benzer mantıkla çalışır ancak top indisiyle yönetilir.push
, pop
, peek
, isEmpty
, isFull
fonksiyonlarını dizi kullanarak tasarlayın.(
, {
, [
parantezlerinin doğru açılıp kapanıp kapanmadığını kontrol eden algoritmayı tasarlayın.