Bir sabit boyutlu dizi kullanılarak iki yığın etkin bir şekilde uygulanabilir: yığın # 1 sol uçtan başlar ve sağa doğru büyür ve yığın # 2 sağ uçtan başlar ve sola doğru büyür. Aynı şey üç istif için de mümkün mü?
Daha spesifik olarak, aşağıdaki koşullar göz önüne alındığında üç istif uygulamak mümkündür:
- N nesneyi tutabilen sabit boyutlu bir diziniz var.
- Üç yığın boyutunun toplamı <N olduğu sürece, push () başarısız olmamalıdır.
- Hem push () hem de pop () işlemleri O (1) zamanını almalıdır.
- Diziye ek olarak, yalnızca O (1) ek alan kullanabilirsiniz.
İşte do çözümlerin örnekleridir değil bu gereksinimleri karşılamak:
- Diziyi 3 sabit parçaya bölme ve her parçayı bir yığın için kullanma (ihlal 2).
- Yukarıdakine benzer ancak istifler arasında hareketli sınırları vardır (ihlal 3).
- Basit bağlantılı listeye dayalı uygulamalar (ihlal 4).
Tüm koşulları (1) - (4) tam olarak karşılamasalar bile önemsiz olmayan algoritmaları veya imkansızlık kanıtlarını kabul edeceğim, örneğin, push / pop'un O (1) amortisman süresini aldığı veya ek bellek O (N) 'den daha küçüktür, örneğin O (log N). Veya örneğin, push / pop başına dizinin 5 öğesinden daha az öğesine erişmenin imkansız olduğunu gösteren bir imkansızlık kanıtı.