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 ()
- ¿Qué algoritmo de búsqueda usa True caller?
- ¿Hay un paquete de Python que calcule la complejidad del tiempo?
- ¿Cómo se resolvería el problema lingüístico 'Summer Eyes', de NACLO 2009?
- ¿Cómo explicarías un 'arreglo' a un principiante en programación?
- ¿Hay alguna estructura de datos que pueda realizar las funciones de inserción, búsqueda y eliminación en O (log n)?
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.