📜  Rexx-堆栈

📅  最后修改于: 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