Rexx - Pilas

La pila a veces se denomina cola de datos externos, pero seguimos el uso común y nos referimos a ella como la pila. Es un bloque de memoria que es lógicamente externo a Rexx. Las instrucciones como empujar y poner en cola colocan datos en la pila, e instrucciones como extraer y analizar extraer extraen datos de ella. La función incorporada en cola informa cuántos elementos hay en la pila.

Echemos un vistazo a un ejemplo de pila.

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

El primer ciclo do del programa coloca tres líneas de datos en la pila. Utiliza la instrucción push para hacer esto. Numeramos las líneas para que cuando se recuperen en el orden LIFO, su orden sea evidente.

Los elementos colocados en la pila por la instrucción push se recuperan en el orden LIFO -

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

El siguiente bloque de código muestra el uso de la función incorporada en cola para descubrir la cantidad de líneas en la pila, así como un bucle para recuperar todas las líneas de la pila:

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

Dado que los tres elementos se colocaron en la pila mediante push, se recuperan en el pedido LIFO.

La salida del programa anterior será la siguiente.

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