Bir yığın ve bir kuyruğun açıklamasını denemek ve aşırı basitleştirmek için, Her ikisi de zincirin bir ucundan erişilebilen dinamik bilgi öğeleri zincirleridir ve aralarındaki tek gerçek fark şudur:
bir yığınla çalışırken
- zincirin bir ucuna öğeler eklersiniz ve
- zincirin aynı ucundaki öğeleri alır ve / veya kaldırırsınız
kuyruktayken
- zincirin bir ucuna öğeler eklersiniz ve
- onları diğer uçtan alır / kaldırırsınız
NOT : Bu bağlamda soyut geri alma / kaldırma ifadesini kullanıyorum çünkü öğeyi zincirden yeni aldığınızda veya bir anlamda yalnızca okuduğunuzda veya değerine eriştiğinizde, ancak öğeyi kaldırdığınız durumlar da vardır. zincir ve son olarak, aynı çağrı ile her iki eylemi de gerçekleştirdiğiniz durumlar vardır.
Ayrıca element kelimesi, hayali zinciri olabildiğince soyutlamak ve onu belirli programlama dili terimlerinden ayırmak için bilinçli olarak kullanılır. Öğe adı verilen bu soyut bilgi varlığı, dile bağlı olarak herhangi bir şey olabilir, bir işaretçi, bir değer, bir dizgi veya karakterler, bir nesne, ...
Çoğu durumda, aslında ya bir değer ya da bellek konumu (yani bir işaretçi) olsa da. Gerisi de bu gerçeği dil jargonunun arkasına saklıyor <
Sıra, öğelerin sıralaması önemli olduğunda ve öğelerin programınıza ilk girdiği zamanki ile tamamen aynı olması gerektiğinde yardımcı olabilir. Örneğin, bir ses akışını işlediğinizde veya ağ verilerini arabelleğe aldığınızda. Veya herhangi bir tür depolama ve ileri işlem yaptığınızda. Tüm bu durumlarda, programınıza geldiklerinde aynı sırada çıkacak öğelerin sırasına ihtiyacınız vardır, aksi takdirde bilgiler anlam ifade etmeyebilir. Bu nedenle, programınızı bazı girdilerden veri okuyan, bazılarını işleyen ve bunları bir kuyruğa yazan ve kuyruktan veri alan bir parçayı işleyen ve verileri daha fazla işlemek veya iletmek için başka bir kuyrukta depolayan bir bölümde kırabilirsiniz. .
Programınızın hemen adım (lar) ında kullanılacak bir öğeyi geçici olarak saklamanız gerektiğinde yığın yararlı olabilir. Örneğin, programlama dilleri genellikle değişkenleri işlevlere geçirmek için bir yığın yapısı kullanır. Gerçekte yaptıkları şey, işlev argümanlarını yığında depolamak (veya itmek) ve ardından yığından aynı sayıda öğeyi kaldırdıkları ve aldıkları (veya patladıkları) işleve atlamaktır. Bu şekilde yığının boyutu, iç içe geçmiş işlev çağrılarının sayısına bağlıdır. Ek olarak, bir işlev çağrıldıktan ve yaptığı işi bitirdikten sonra, yığını çağrılmadan önceki haliyle tamamen aynı durumda bırakır! Bu şekilde, herhangi bir işlev, diğer işlevlerin onunla nasıl çalıştığını görmezden gelerek yığınla çalışabilir.
Son olarak, benzer kavramlar için aynı yerde kullanılan başka terimler olduğunu bilmelisiniz. Örneğin bir yığın, yığın olarak adlandırılabilir. Bu kavramların hibrit versiyonları da vardır, örneğin çift uçlu bir kuyruk aynı anda hem yığın hem de kuyruk olarak davranabilir, çünkü her iki uçtan aynı anda erişilebilir. Ek olarak, bir veri yapısının size bir yığın veya bir kuyruk olarak sunulması, bu şekilde uygulandığı anlamına gelmez, bir veri yapısının herhangi bir şey olarak uygulanabileceği ve belirli bir veri yapısı basitçe böyle davranması sağlanabilir. Başka bir deyişle, herhangi bir veri yapısına bir itme ve pop yöntemi sağlarsanız, bunlar sihirli bir şekilde yığın haline gelir!