Rexx - Yığınlar
Yığın bazen harici veri kuyruğu olarak adlandırılır, ancak yaygın kullanımı izler ve ona yığın olarak atıfta bulunuruz. Mantıksal olarak Rexx'e harici olan bir bellek bloğudur. İtme ve sıraya alma gibi talimatlar, verileri yığına yerleştirir ve çekme ve ayrıştırma gibi talimatlar, buradan veri çıkarır. Sıraya alınmış yerleşik işlev, yığında kaç öğe olduğunu bildirir.
Bir yığın örneğine bakalım.
/* STACK: */
/* */
/* This program shows how to use the Rexx Stack as either a */
/* stack or a queue. */
do j = 1 to 3
push ‘Stack: line #’ || j
/* push 3 lines onto the stack */
end
do j = 1 to queued()
/* retrieve and display LIFO */
pull line
say line
end
do j = 1 to 3 queue ‘Queue: line #’ || j
/* queue 3 lines onto the stack */
end
do queued()
/* retrieve and display FIFO */
pull line
say line
end
exit 0
Programdaki ilk do döngüsü yığına üç satır veri yerleştirir. Bunu yapmak için itme talimatını kullanır. Hatları numaralandırıyoruz, böylece LIFO siparişinde alındıklarında sıraları görünür olacak.
İtme talimatı ile yığına yerleştirilen öğeler LIFO sırasına göre alınır -
do j = 1 to 3
push ‘Stack: line #’ || j /* push 3 lines onto the stack */
end
Bir sonraki kod bloğu, yığındaki satırların sayısını keşfetmek için sıraya alınmış yerleşik işlevin kullanımını ve yığındaki tüm satırları almak için bir döngüyü gösterir -
do j = 1 to queued() /* retrieve and display LIFO */
pull line
say line
end
Üç öğe yığına itme yoluyla yerleştirildiği için LIFO sırasına göre geri alınır.
Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır.
STACK: LINE #3
STACK: LINE #2
STACK: LINE #1