You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"<font size='5' face='Georgia, Arial'>IIC2115 - Programación como herramienta para la ingeniería</font><br>\n",
9
+
"<font size='1'>Basado en material de Karim Pichara y Christian Pieringer. Todos los derechos reservados.</font>\n",
10
+
"</p>"
11
+
]
12
+
},
13
+
{
14
+
"cell_type": "markdown",
15
+
"metadata": {},
16
+
"source": [
17
+
"## Stacks"
18
+
]
19
+
},
20
+
{
21
+
"cell_type": "markdown",
22
+
"metadata": {},
23
+
"source": [
24
+
"Los _stacks_ son una estructura de datos en donde una colección de objetos son insertados y removidos según el principio de __Last In__, __First Out___ (LIFO). Es decir, un usuario puede agregar secuencialmente objetos al stack en cualquier momento, sin embargo, solo puede remover desde el stack el objeto __más recientemente agregado__ (ubicado en el tope del _stack_). Cómo se muestra en la siguiente figura, el funcionamiento de los stacks es equivalente al de una columna de platos apilados después de ser lavados. El último plato lavado lavado será el primero en ser utilizado.\n",
25
+
"\n",
26
+
""
27
+
]
28
+
},
29
+
{
30
+
"cell_type": "markdown",
31
+
"metadata": {},
32
+
"source": [
33
+
"En general, los stacks tienen los siguientes métodos: `push()`, `pop()`, `top()`, `is_empty()`, `len()`. Dentro de los métodos más usados se encuentran: `push()` para insertar un objeto al tope del stack; y `pop()` para remover el último objeto insertado en él. En Python, los stacks están implementados mediante listas. A continuación vemos los métodos para stacks equivalentes con la implementación usando listas.\n",
34
+
"\n",
35
+
""
36
+
]
37
+
},
38
+
{
39
+
"cell_type": "markdown",
40
+
"metadata": {},
41
+
"source": [
42
+
"Estos métodos funcionan de la siguiente manera:"
43
+
]
44
+
},
45
+
{
46
+
"cell_type": "code",
47
+
"execution_count": null,
48
+
"metadata": {},
49
+
"outputs": [],
50
+
"source": [
51
+
"# un stack vacio\n",
52
+
"stack = []\n",
53
+
"\n",
54
+
"# push\n",
55
+
"stack.append(1)\n",
56
+
"stack.append(10)\n",
57
+
"stack.append(12)\n",
58
+
"\n",
59
+
"print(stack)\n",
60
+
"\n",
61
+
"# pop\n",
62
+
"stack.pop() \n",
63
+
"print('pop: {0}'.format(stack))\n",
64
+
"\n",
65
+
"# top\n",
66
+
"stack.append(25)\n",
67
+
"print('top: {0}'.format(stack[-1]))\n",
68
+
"\n",
69
+
"# len\n",
70
+
"print('el stack tiene {0} elementos'.format(len(stack)))\n",
71
+
"\n",
72
+
"# is_empty\n",
73
+
"stack = []\n",
74
+
"if len(stack) == 0:\n",
75
+
" print('el stack está vacío')"
76
+
]
77
+
},
78
+
{
79
+
"cell_type": "markdown",
80
+
"metadata": {},
81
+
"source": [
82
+
"Un ejemplo real del uso de stacks en una aplicación es el botón *back* en los navegadores de internet. Durante la navegación, todas las direcciones van siendo ingresadas en un stack. La última dirección siempre es recuperada al presionar este botón.\n",
0 commit comments