Unidad 9 vid Flashcards
¿Qué es una cola en términos de estructuras de datos?
Una cola es una lista en la que todas las inserciones se realizan por un extremo y todas las eliminaciones se realizan por el otro extremo de la lista.
¿Por qué las colas también se llaman listas FIFO?
Las colas también se llaman listas FIFO, que significa “First-In-First-Out” (el primero en entrar es el primero en salir). Esto se refiere al principio de que el primer elemento que se añade a la cola es el primero en ser eliminado.
¿Cuál es un ejemplo práctico de una cola en el contexto informático?
Un ejemplo práctico en el contexto informático es la gestión de trabajos de una impresora conectada en red. Los archivos por imprimir se guardan en una cola y se imprimen según el orden de llegada.
¿Cómo se representaría gráficamente una cola?
Se representaría gráficamente como una estructura de datos horizontal, donde los elementos se insertan por el extremo derecho y se extraen por el extremo izquierdo.
¿Cuáles son las operaciones básicas sobre colas?
Las operaciones básicas sobre colas incluyen la creación de una cola, la consulta del contenido del primer elemento, la inserción de un nuevo elemento (encolar) y la eliminación del primer elemento de la cola (desencolar).
¿Cómo se realiza la inserción de un nuevo elemento en una cola?
La inserción de un nuevo elemento en una cola se realiza utilizando la operación de encolar, donde el nuevo elemento se agrega al extremo final de la cola.
¿Cuál es el propósito de la estructura de datos implementada en el programa en Pascal proporcionado?
El propósito de la estructura de datos implementada en el programa en Pascal es gestionar una cola dinámica. Se utilizan procedimientos y funciones para inicializar la cola, encolar, desencolar y obtener la cantidad de datos en la cola.
¿Qué significa la abreviatura TDA en el contexto del programa Pascal?
TDA significa “Tipo de Dato Abstracto”. En este contexto, se refiere a la implementación de una cola como un TDA en el programa Pascal.
¿Cuáles son los procedimientos utilizados para manipular la cola en el programa en Pascal?
Los procedimientos utilizados son “InicializarCola” para crear y reiniciar la cola, y “Encolar” para agregar nuevos elementos a la cola.
¿Cómo se implementa la función Desencolar en el programa Pascal?
La función “Desencolar” toma el primer dato de la cola, ajusta la cabeza de la cola al siguiente elemento, libera el espacio ocupado por el nodo desencolado y actualiza el contador de datos.
¿Cuál es la función de la función CantidadDatos en el programa Pascal?
La función “CantidadDatos” devuelve el número actual de elementos en la cola, proporcionando información sobre cuántos elementos hay almacenados en la cola en un momento dado.
¿Cuál es el propósito del bucle “repeat” en el programa Pascal?
El bucle “repeat” se utiliza para ingresar números en la cola hasta que se introduce el número 6, momento en el que el bucle se detiene, y se muestra la cola completa.
¿Cómo se utilizan los procedimientos y funciones para interactuar con la cola en el programa Pascal?
Se utiliza “Encolar” para agregar números a la cola, “Desencolar” para obtener y mostrar elementos de la cola, y “CantidadDatos” para conocer la cantidad actual de elementos en la cola.
¿Qué hace la línea de código “while Cantidaddatos > 0 do WriteLn(Desencolar);” al final del programa Pascal?
Esta línea de código muestra y desencola todos los elementos restantes en la cola hasta que la cola esté vacía, imprimiendo los elementos en orden de llegada.
¿Cuál es el propósito de la línea de código “readkey” al final del programa Pascal?
La línea “readkey” se utiliza para esperar la entrada de una tecla antes de cerrar la ejecución del programa, permitiendo al usuario revisar los resultados en la pantalla.
Programa en pascal::
program colaDinamica;
uses crt;
type
puntero = ^nodo;
nodo = record
dato: integer;
siguiente: puntero
end;
var
cabeza: puntero;
contadorDeDatos: integer;
procedure InicializarCola;
begin
cabeza := nil;
contadorDeDatos := 0;
end;
procedure Encolar(nuevoDato: integer);
var
nuevoNodo, posicionActual: puntero;
begin
new(nuevoNodo);
nuevoNodo^.dato := nuevoDato;
nuevoNodo^.siguiente := nil;
if (cabeza = nil) then
cabeza := nuevoNodo
else
begin
posicionActual := cabeza;
while (posicionActual^.siguiente <> nil) do
posicionActual := posicionActual^.siguiente;
posicionActual^.siguiente := nuevoNodo;
end;
contadorDeDatos := contadorDeDatos + 1;
end;
function Desencolar: integer;
var
nuevaCabeza: puntero;
dato: integer;
begin
dato := cabeza^.dato;
nuevaCabeza := cabeza^.siguiente;
dispose(cabeza);
cabeza := nuevaCabeza;
contadorDeDatos := contadorDeDatos - 1;
Desencolar := dato;
end;
function CantidadDatos: integer;
begin
CantidadDatos := contadorDeDatos;
end;
var
n: integer;
begin
clrscr;
InicializarCola;
writeln(‘Guardando 450 y 32.’);
Encolar(450);
Encolar(32);
writeln(‘Los datos eran:’);
writeln(Desencolar);
writeln(Desencolar);
writeln(‘Ahora introduce datos, 6 para terminar.’);
repeat
write(‘Numero: ‘);
readln(n);
if n <> 6 then
Encolar(n);
until n = 6;
writeln(‘Los numeros eran:’);
while CantidadDatos > 0 do
writeln(Desencolar);
readkey;
end.