Cómo implementar la implementación de la pila y la cola en las estructuras de datos

Dada una lista, agregar y eliminar del mismo extremo es lo que se conoce como pila. Hacer lo mismo desde el extremo opuesto se llama cola.

Me refiero a jergas aparte, ahí es donde está el quid de las matemáticas.

as_stack = list ()
para ([0: 5]) {as_stack.push ($)}
println (as_stack)
para ([0: 5]) {printf (‘% s’, as_stack.pop ())}
println ()

rendimientos, cuando se ejecuta:

➜ wiki git: (maestro) ✗ zmb tmp.zm
[0,1,2,3,4]
4 3 2 1 0
➜ wiki git: (maestro) ✗

Así, esencialmente, la pila puede implementarse mediante:

def Stack {
def $$ () {
$ .list = list ()
}
def push (elemento) {
$ .list.add (artículo)
}
def peek () {
pánico (vacío ($. list), ‘Underflow!’)
$ .list [-1] // devuelve el último artículo
}
def pop () {
pánico (vacío ($. list), ‘Underflow!’)
$ .list.remove (size ($. list) -1) // devuelve el último artículo
}
def $ str () {
str ($. list) + “* top”
}
}
pila = nuevo (pila)
para ([0: 5]) {stack.push ($)}
println (pila)
for ([0: 5]) {printf (‘% s’, stack.pop ())}
println ()

Y el resultado es:

➜ wiki git: (maestro) ✗ zmb tmp.zm
[0,1,2,3,4] * arriba
4 3 2 1 0
➜ wiki git: (maestro) ✗

y estamos listos para irnos.