Saf bir yığın olarak, sadece izin verilen operasyonlardır Push
, Pop
ve Peek
ancak pratik açıdan, bu tam olarak doğru değil. Daha doğrusu, Peek
işlem genellikle yığındaki herhangi bir konuma bakmanıza izin verir, ancak yakalama, yığının bir ucuna göre olmasıdır.
Yani, diğerlerinin söylediği gibi, bir dizi rastgele erişimdir ve her şey dizinin başlangıcına atıfta bulunur .
Bir yığında, yalnızca yığının çalışma ucuna ekleyebilir / kaldırabilirsiniz, ancak yine de rasgele erişime sahip olursunuz, ancak çalışma ucuna başvurulur . Temel fark budur.
Örneğin, bir yığındaki parametreleri bir işleve ilettiğinizde, callee'nin parametrelere bakmak için parametreleri atması gerekmez. Sadece yığındaki yerel değişkenleri iter ve yığın işaretçisinden bir ofsete dayalı olarak tüm yerel değişkenlere ve parametrelere başvurur. Sadece bir dizi kullanıyorsanız, callee parametrelerini nerede arayacağını nasıl bilebilir? Çağrı tamamlandığında, yerel değişkenlerini çıkarır, bir dönüş değeri iter, kontrolü arayana döndürür ve arayan dönüş değerini (varsa) ve daha sonra parametreleri yığından çıkarır. İşin güzelliği, işlev çağrılarınıza ne kadar iç içe olursanız olun (yığın alanınız kalmadığı varsayılarak) çalışır.
Bu belirli bir kullanım / uygulamadır, ancak farkı gösterir: diziye her zaman en baştan başvurulur, ancak yığınlara her zaman çalışan bir son konumdan başvurulur.
Bir yığının olası bir uygulaması , çalışma dizisinin nerede olduğunu hatırlamak için bir dizi artı bir dizindir.