📅  最后修改于: 2020-11-02 04:00:40             🧑  作者: Mango
堆栈有时称为外部数据队列,但我们遵循常见用法,将其称为堆栈。它是Rexx逻辑外部的内存块。诸如push和queue的指令将数据放入堆栈,而pull和parse pull的指令则从中提取数据。排队的内置函数报告堆栈中有多少个项目。
让我们看一下堆栈的示例。
/* 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
程序中的第一个do循环将三行数据放置到堆栈中。它使用推指令执行此操作。我们对行进行编号,以便按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