Está en la página 1de 39

Presentado por:

Cesar Augusto Núñez - 12141019

David Alejandro Lara Pineda - 22141143


Joe Neftalí Corrales Cabrera - 22141156

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.

1. (Insertar) Deberá solicitar al usuario el elemento a insertar y la posición a insertarlo.


Luego deberá indicarle al usuario si la operación se realizó con éxito, y preguntar al
usuario si desea introducir otro elemento, de ser así continuar introduciendo elementos
nuevos, hasta que el usuario decida salir, en cuyo caso deberá regresar al Menú
Operaciones de Listas.

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.

3. (Localizar) Le solicitará al usuario que introduzca un número de cuenta, y deberá de


buscar ese dato en los elementos de la lista, desplegando el primer Alumno encontrado
en pantalla, junto con su posición. De no encontrar el dato en ningún elemento de la
lista, entonces deberá desplegar un mensaje indicándolo.
Arraylists:
LinkedLists:

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.

4. (Suprimir) Le solicitará al usuario una posición en la lista, y eliminará el elemento que


esté en esa posición, deberá avisarle al usuario que la eliminación fue exitosa o no.
Arraylists:
LinkedLists:
Suprimir elimina el objeto en la posición indicada y determina si es necesario hacer
corrimientos dependiendo de la posición en que se encuentre o el número de elementos de la
lista. En caso de usar la lista enlazada les asigna los valores correctos a los nodos de inicio y
final.

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:

vacía devuelve falso o verdadero dependiendo si el número de elementos en la lista es mayor a


0 o no hay elementos.
6. (Recupera) Solicitará al usuario un entero, que representa una posición en la lista,
desplegará el elemento que se encuentre en esa posición (si la posición es válida). Si no,
mostrará un mensaje indicando que la posición no es válida.

Arraylists:
LinkedLists:

Recupera retorna el ítem que se encuentra en el elemento en la posición indicada de la lista.

7. (Siguiente) Pedirá un entero que representa una posición en la Lista y mostrará el


elemento que está en la posición siguiente. Si no hay elemento en la posición siguiente
mostrará un mensaje indicando que el espacio siguiente está vacío.
Arraylists:

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.

8. (Anterior) Pedirá un entero que representa una posición en la Lista y mostrará el


elemento que está en la posición anterior. Si no hay elemento en la posición anterior
mostrará un mensaje indicando que el espacio anterior está vacío.

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.

9. (Anula) Borrará todos los elementos de la lista, liberando la memoria pertinente.

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 Top (primero):


Esta función verifica que la pila no este vacía, si no lo está devuelve el elemento que
se encuentra en la parte superior, de lo contrario devuelve nullptr.
Función Push (meter):
Se verifica que no esté llena la pila, en el caso que lo esté duplica su tamaño y agrega el nuevo
elemento al final del arreglo, de no ser así lo agrega directamente al final de la pila.

Función Pop (sacar):


Esta función verifica que no esté vacía la pila, si no lo esta se resta 1 a la longitud, y almacena el
valor borrado en un auxiliar, y establece el último elemento en nulo, y devuelve el valor
eliminado, de estar vacía simplemente retorna nullptr.
Función (estaVacia):
Esta función booleana verifica si la pila está vacía, si lo está devuelve un true, de no ser así
devuelve false.

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 Push (meter):


Esta función lo que hace es agregar un nuevo elemento a la pila.
Función Pop (sacar):
Elimina el primer elemento de la pila (el ultimo agregado) y retorna para mostrar al usuario que
elemento se eliminó.

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.

También podría gustarte