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