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