Rexx - Ngăn xếp

Ngăn xếp đôi khi được gọi là hàng đợi dữ liệu bên ngoài, nhưng chúng tôi tuân theo cách sử dụng phổ biến và gọi nó là ngăn xếp. Nó là một khối bộ nhớ về mặt logic bên ngoài Rexx. Các hướng dẫn như đẩy và xếp hàng đặt dữ liệu vào ngăn xếp và các hướng dẫn như kéo và phân tích cú pháp kéo trích xuất dữ liệu từ đó. Hàm tích hợp sẵn trong hàng đợi báo cáo có bao nhiêu mục trong ngăn xếp.

Hãy xem một ví dụ về ngăn xếp.

/* 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

Vòng lặp do đầu tiên trong chương trình đặt ba dòng dữ liệu vào ngăn xếp. Nó sử dụng lệnh push để làm điều này. Chúng tôi đánh số các dòng để khi chúng được truy xuất theo thứ tự LIFO, thứ tự của chúng được rõ ràng.

Các mục được đặt vào ngăn xếp bằng lệnh đẩy được truy xuất theo thứ tự LIFO -

do j = 1 to 3 
push ‘Stack: line #’ || j     /* push 3 lines onto the stack */ 
end

Khối mã tiếp theo cho thấy việc sử dụng hàm tích hợp sẵn trong hàng đợi để khám phá số dòng trên ngăn xếp, cũng như một vòng lặp để lấy tất cả các dòng từ ngăn xếp -

do j = 1 to queued()    /* retrieve and display LIFO */ 
pull line 
say line 
end

Vì ba mục đã được đặt trên ngăn xếp thông qua đẩy, chúng được truy xuất theo thứ tự LIFO.

Kết quả của chương trình trên sẽ như sau.

STACK: LINE #3 
STACK: LINE #2 
STACK: LINE #1