Unidad 8 vid Flashcards

1
Q

¿Cómo se relacionan las pilas con la estructura LIFO?


A

Las pilas son también conocidas como estructuras LIFO (Last In First Out) debido a que el último elemento en entrar será el primero en salir.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Cómo se describe una pila en relación con las listas?


A

Una pila es un subtipo de la lista, lo que significa que todas las operaciones abstractas sobre la pila pueden definirse en función de las operaciones sobre listas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Cuál es el principio fundamental de una pila en cuanto a la inserción y eliminación de elementos?


A

El principio fundamental de una pila es que los elementos se insertan de uno en uno (apilar) y se sacan en el orden inverso al cual se han insertado (desapilar).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué se entiende por “cima” en el contexto de una pila?


A

En el contexto de una pila, “cima” se refiere al único elemento que se puede observar dentro de la pila, y es el último insertado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Cuáles son algunas aplicaciones prácticas de las pilas en algoritmos y programación?

A

Las pilas son utilizadas como estructuras auxiliares en numerosos algoritmos y esquemas de programación, como en recorridos de árboles y grafos, así como en la evaluación de expresiones. También se utilizan en la gestión de registros de activación de subprogramas durante la ejecución de un programa.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Cuáles son las operaciones básicas sobre pilas?


A

Las operaciones básicas sobre pilas incluyen:
Creación de una pila.
Consulta del contenido del primer elemento de la pila.
Inserción de un nuevo elemento sobre la pila (push).
Eliminación del elemento superior de la pila (pop).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Cuáles son las operaciones que se pueden realizar en el ejemplo en Pascal proporcionado?


A

En el ejemplo en Pascal, se implementan las siguientes operaciones sobre la pila:
InicializarPila
Apilar
Desapilar
CantidadDatos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Cómo se implementa la operación “push” en el ejemplo en Pascal?


A

La operación “push” se implementa mediante el procedimiento Apilar, que agrega un nuevo elemento a la pila.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Cómo se implementa la operación “pop” en el ejemplo en Pascal?

A

La operación “pop” se implementa mediante la función Desapilar, que elimina el elemento superior de la pila y devuelve su valor.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Qué hace la función CantidadDatos en el ejemplo en Pascal?


A

La función CantidadDatos devuelve la cantidad actual de elementos en la pila.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Cuál es el propósito del programa de prueba en Pascal al final del ejemplo?


A

El programa de prueba en Pascal demuestra el uso de las operaciones sobre la pila, inicializando la pila, apilando y desapilando elementos, y mostrando la cantidad de datos en la pila en diferentes puntos del programa.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Ejemplo en Pascal y Explicación:

A

program pilaDinamica;
uses crt;

type
puntero = ^nodo;
nodo = record
dato: integer;
siguiente: puntero;
end;

var
cima: puntero;
contadorDeDatos: integer;

procedure InicializarPila;
begin
cima := nil;
contadorDeDatos := 0;
end;

procedure Apilar(nuevoDato: integer);
var
nuevoNodo: puntero;
begin
new(nuevoNodo);
nuevoNodo^.dato := nuevoDato;
nuevoNodo^.siguiente := cima;
cima := nuevoNodo;
contadorDeDatos := contadorDeDatos + 1;
end;

function Desapilar: integer;
var
nuevaCima: puntero;
valorDesapilado: integer;
begin
if cima <> nil then
begin
valorDesapilado := cima^.dato;
nuevaCima := cima^.siguiente;
dispose(cima);
cima := nuevaCima;
contadorDeDatos := contadorDeDatos - 1;
Desapilar := valorDesapilado;
end
else
begin
writeln(‘La pila está vacía.’);
Desapilar := 0; // Valor por defecto al desapilar desde pila vacía
end;
end;

function CantidadDatos: integer;
begin
CantidadDatos := contadorDeDatos;
end;

(* Programa de prueba *)

var
n: integer;

begin
clrscr;
InicializarPila;

writeln(‘Guardando 45 y 222…’);
Apilar(45);
Apilar(222);

writeln(‘Los datos eran:’);
writeln(Desapilar);
writeln(Desapilar);

writeln(‘Ahora introduce datos, 0 para terminar…’);

repeat
write(‘Ingresa nuevo dato: ‘);
readln(n);
if n <> 0 then
Apilar(n);
until n = 0;

writeln(‘Los datos eran:’);
while CantidadDatos > 0 do
writeln(Desapilar);

readkey;
end.

Explicación:

InicializarPila:
Este procedimiento inicializa la pila estableciendo la variable cima en nil y contadorDeDatos en 0.

Apilar:
El procedimiento Apilar agrega un nuevo elemento a la pila.
Se crea un nuevo nodo, se asigna el nuevo dato y se establece el siguiente enlace al actual cima.
Luego, cima se actualiza para apuntar al nuevo nodo y se incrementa el contador de datos.

Desapilar:
La función Desapilar elimina el elemento superior de la pila y devuelve su valor.
Se verifica si la pila no está vacía antes de intentar desapilar.
Se libera el espacio del nodo desapilado y se actualiza cima y el contador de datos.

CantidadDatos:
La función CantidadDatos devuelve el número actual de elementos en la pila.

Programa de Prueba:
Se inicializa la pila y se apilan los números 45 y 222.
Se muestra en pantalla y desapila ambos elementos.
Luego, se permite al usuario ingresar nuevos datos hasta que ingresa 0.
Finalmente, se muestra en pantalla el contenido de la pila al desapilar todos los elementos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly