Stacks
优质
小牛编辑
132浏览
2023-12-01
堆栈有时称为外部数据队列,但我们遵循常见用法并将其称为堆栈。 它是一块逻辑上在Rexx外部的内存块。 像push和queue这样的指令将数据放入堆栈,拉取和解析等指令从中提取数据。 排队的内置函数报告堆栈中有多少项。
我们来看一个堆栈的例子。
/* 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循环将三行数据放入堆栈。 它使用push指令来执行此操作。 我们对这些行进行编号,以便在以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