Rexx - สแต็ค
บางครั้งสแต็กเรียกว่าคิวข้อมูลภายนอก แต่เราติดตามการใช้งานทั่วไปและอ้างถึงว่าเป็นสแตก เป็นบล็อกของหน่วยความจำที่มีเหตุผลภายนอกของ Rexx คำแนะนำเช่นพุชและคิววางข้อมูลลงในสแต็กและคำแนะนำเช่นดึงและแยกวิเคราะห์ดึงดึงข้อมูลจากมัน ฟังก์ชันในตัวที่อยู่ในคิวจะรายงานจำนวนรายการที่อยู่ในสแต็ก
ลองมาดูตัวอย่างของกอง
/* 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
ลูปแรกในโปรแกรมจะวางข้อมูลสามบรรทัดลงในสแต็ก มันใช้คำสั่งผลักดันเพื่อทำสิ่งนี้ เรากำหนดหมายเลขบรรทัดเพื่อให้เมื่อดึงข้อมูลในลำดับ LIFO ลำดับของพวกเขาให้ชัดเจน
รายการที่วางลงในสแต็กโดยคำสั่งผลักจะถูกดึงมาตามลำดับ LIFO -
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
เนื่องจากไอเท็มทั้งสามถูกวางลงบนสแต็กผ่านการพุชจึงถูกดึงข้อมูลตามลำดับ LIFO
ผลลัพธ์ของโปรแกรมข้างต้นจะเป็นดังนี้
STACK: LINE #3
STACK: LINE #2
STACK: LINE #1