Rexx - 堆栈
堆栈有时也被称为外部数据队列,但我们按照通常的用法,将其称为栈。 它是逻辑上位于 Rexx 外部的一块内存。 像push和queue这样的指令将数据放入堆栈中,像pull和parse这样的指令从堆栈中提取数据。 排队的内置函数报告堆栈中有多少项。
让我们看一个堆栈的例子。
/* 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