Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tarea:
Manual para usuario
Asignatura:
Estructura de datos
Catedrático:
Ing. Reynold Bocanegra
27 de septiembre 2022
Objetivos
Enseñarle al usuario a usar cada una de las estructuras de datos.
Explicar de forma clara y simple cada funcionalidad que tienen las
diferentes estructuras.
o Listas
o Pilas
o Colas
Explicar cómo se navega a través de todo el programa.
Menús
Los métodos de menú piden al usuario que ingrese una de las opciones sugeridas y
evalúa si es una opción válida o no, de ser válida devuelve la posición correcta, sino un –
1 para que cuando el método se llama dentro de los switches, vuelva a pedir una opción
válida al usuario.
Caso 1: Los menús para TDALista, arraylist y linkedlists, que llaman a sus respectivos
métodos de opciones.
Caso 2: Los menús para TDAPila, arrayStack y linkedStack, que llaman a sus respectivos
métodos de opciones.
Caso 3: Los menús para TDACola, arrayQueue y linkedQueue, que llaman a sus
respectivos métodos de opciones.
Lista (TDALista)
Una lista es una secuencia de cero o más elementos de un tipo determinado. Es una estructura
flexible cuya capacidad puede aumentarse o acortarse y se puede añadir o quitar elementos de
cualquier posición.
Podemos crear una lista mediante arreglos y por medio de nodos en una lista enlazada. El
arraylist tiene la ventaja de que tiene un tiempo constante para poder buscar elementos y en
otras situaciones. Sin embargo, una vez que este llega a su máxima capacidad hay que crear
otro arreglo y copiar todos sus elementos, en casos donde los elementos son demasiados, es
posible que no haya suficiente memoria o que tome demasiado tiempo realizarlo.
Por otra parte, las funciones de listas enlazadas tienen un tiempo de ejecución de O(n) en la
mayoría de los casos. A pesar de que el tiempo de ejecución de sus métodos no tiende a ser
constante, cuando llega a su máxima capacidad se puede aumentar con un tiempo de 0(1).
Listas mediante arreglos y listas
enlazadas mediante nodos.
Arraylists:
LinkedLists:
Se usa la función de validarNumero para asegurarse que la posición insertada por el usuario sea
un dígito.
Inserta añade un objeto en la posición indicada, tomando en cuenta si es necesario realizar
corrimientos o aumentar la capacidad.
2. (Imprimir Lista) Desplegará de manera estética los elementos que estén en la lista.
Arraylists:
LinkedLists:
Imprimir lista se mueve por cada uno de los objetos o nodos de la lista e imprime lo que
devuelve el método toString con su respectiva posición en la lista.
Localiza utiliza el método equals para determinar si el número de cuenta del alumno es igual al
del objeto en esa posición, de ser así retorna la posición, sino retorna –1.
5. (Vacía) Mostrará un mensaje indicando que la lista está vacía o no está vacía. Si no está
vacía mostrará cuántos elementos hay en ella.
Arraylists:
LinkedLists:
Arraylists:
LinkedLists:
LinkedLists:
Siguiente obtiene una posición ingresada por el usuario, y esta retorna el elemento de la lista
en la posición siguiente, de existir.
Arraylists:
LinkedLists:
Anterior obtiene una posición ingresada por el usuario, y esta retorna el elemento de la lista en
la posición anterior, de existir.
Arraylists:
LinkedLists:
Anula elimina todos los elementos de la lista, haciendo las liberaciones de memoria necesarias.
Pila (David)
Una pila (stack) es una colección de objetos que son insertados y removidos de
acuerdo con el principio último en entrar,
primero en salir, LIFO (last-in first-out).
Los objetos pueden ser insertados en una pila en
cualquier momento, pero solamente el más
reciente insertado, es decir, el "último" objeto
puede ser removido en cualquier momento.
La pila tiene varias funciones como:
-top ()
-push ()
-pop ()
-estaVacía ()
-imprime_pila ()
Constructor de Pila:
El constructor de pila tiene varios atributos como n(longitud/length), que nos indica la longitud
de la pila, el siguiente atributo sería capacidad, que le asigna la misma a la pila, dejando en este
caso un default de 10 espacios en memoria, luego está el arreglo con apuntadores de tipo de
dato “Alumno”, con la misma capacidad que le asignamos; Luego se itera todo el arreglo para
asegurarnos que está limpio/vacío asignándole a cada posición nullptr.
Función (imprime_pila):
Esta función recorre cada elemento de la pila mediante un for, y va imprimiendo en este caso
en consola cada elemento de la pila.
Pila Enlazada (David)
La pila enlazada cumple con las mismas funciones de una pila convencional, con la
diferencia que esta como su nombre lo indica se enlaza mediante apuntadores y nodos.
Constructor:
En el constructor el inicio se inicializa en nullptr, para crear la nueva pila enlazada.
Función Top (primero):
Se verifica que no este vacía, si no lo esta devuelve el elemento que se encuentra en la parte
superior de la pila, de lo contrario devuelve nullptr.
Función estaVacia:
Esta función retorna si la pila enlazada está vacía o no.
Función imprime_pila:
Esta función recorre toda la pila enlazada y va imprimiendo cada elemento de esta, y se detiene
cuando ya no hay más elementos. (Primero verifica que no esté vacía)
Cola
La estructura de dato cola es del
tipo FIFO, que quiere decir
primero en entrar es el primero
en salir, y funcionan de la misma
manera en que funcionan las
colas de banco, supermercado,
etc. Las colas tienen varias
funciones como:
primero()
encolar()
desencolar ()
estaVacia()
imprime_cola()
Constructor de la cola:
Este es el constructor de la cola, y pues tiene varias propiedades que se inicializan como length,
para saber cuál es la longitud actual de la cola, la siguiente propiedad seria capacidad para
asignarle una capacidad a la cola, en este caso se lo estamos dejando en default de 10 espacios
en memoria. Luego está el arreglo con apuntadores de tipo de dato de “Alumno”, con la
capacidad que le asignamos. Luego Iteramos todo el arreglo para asegurarnos que este limpio
asignándole en cada posición nullptr.
Función “primero”:
Empezaríamos con la función primero y esta tiene el propósito de verificar que la cola no este
vacía y de ser así que retorne el primer elemento de la cola, de otra forma no se retorna nada.
Función “encolar”:
La siguiente funcionalidad sería la de encolar y esta se encarga de agregar un nuevo elemento
al final de la cola, primero se verifica que, si la longitud es igual a la capacidad queriendo decir
que está en su tope, entonces se procedería a hacer un arreglo con capacidad doble y se copia
el arreglo anterior al nuevo. Si todavía hay espacio, se procede a agregar el elemento en la
última posición.
Función “desencolar”:
La funcionalidad desencolar devuelve el objeto que se quitó de la primera posición. Primero se
verifica que la cola no este vacía, entonces se crea una variable temporal para guardar el primer
elemento. Luego con el ciclo for lo que se hace es mover los demás elementos para que tomen
los espacios siguientes a ellos para poder obtener la cola con los valores correctos de una vez
que el primer elemento sale. Si la cola está vacía entonces no se retorna nada.
Función “estaVacia”:
Esta función retorna un booleano (verdadero o falso) verifica si la cola está vacía o no,
revisando que el primer elemento no este vacío o nullptr.
Función “imprimir_cola”:
El nombre de esta función explica todo lo que hace, primero verifica que la cola no este vacía. Si
no, entonces se procede a iterar toda la cola para poder imprimir su contenido de esta forma
[ Elemento Alumno ] [ Elemento Alumno ] [ … ]. De otra forma se imprime que la cola está vacía.
Cola Enlazada
La cola enlazada tiene las mismas funciones que la cola en base a arreglos,
pero con sus diferencias ya que esta tiene el detalle que está construida con
apuntadores para enlazar los nodos.
Constructor de la cola:
Este es el constructor de la cola enlazada, solo se inicializa un atributo y es la cabeza para poder
empezar a enlazar nodos al final de la cola.
Función “primero”:
La función primero tiene el mismo propósito de verificar que la cola no este vacía y de ser así
que retorne el primer elemento de la cola ósea la cabeza, de otra forma no se retorna nada.
Función “encolar”:
La siguiente funcionalidad sería la de encolar y esta tiene como propósito tomar el objeto que
se le pasa como parámetro. Para poder transformarlo a alumno luego se revisa si la cola está
vacía, de ser así entonces se le asigna un nuevo nodo a la cabeza con el objeto alumno y con los
apuntadores de los otros nodos en nullptr, porque es el primer nodo que sea agrega. Si ya hay
elementos en la cola entonces se procede a iterar o recorrer la cola con un ciclo while, y este
nos lleva al último elemento de la cola para poder encolarlo. Al crear el nuevo nodo, se le
asigna el alumno y se enlazan los nodos de manera correcta
Función “desencolar”:
La funcionalidad desencolar devuelve el objeto que se quitó de la primera posición. Primero se verifica
que la cola este vacía si lo está entonces retornamos nullptr porque no hay nada que quitar. Luego si la
cola no está vacía hay una verificación la cual tiene como función de que, si el primer elemento no tiene
uno siguiente, entonces que se desencole siempre pero que se devuelva el primer nodo siempre, esta
verificación evita que el programa deje de funcionar. Si no entonces se procede a actualizar la cabeza al
siguiente nodo, el cual se usa para poder iterar toda la cola y poder actualizarla moviendo los elementos
a los espacios disponibles de delante de ellos, luego se devuelve el elemento que se quito.
Función “estaVacia”:
Esta función retorna un booleano (verdadero o falso) verifica si la cola está vacía o no, revisando que el
primer elemento o la cabeza no este vacía o nullptr.
Función “imprimir_cola”:
El nombre de esta función explica todo lo que hace, primero verifica que la cola no este vacía. Si la cola
está vacía entonces se imprime el mensaje que la cola está vacía. Si no, entonces se procede a iterar
toda la cola para poder imprimir su contenido de esta forma [ Elemento Alumno ] [ Elemento Alumno ]
[ … ] pero antes se imprime el primer elemento fuera del ciclo para poder captar toda la información de
la cola.