Logo Studenta

Listas-Estaticas-Equipo-4

¡Este material tiene más páginas!

Vista previa del material en texto

Centro Universitario de Ciencias
Exactas e Ingenierías
Ingeniería informática
SEMINARIO DE SOLUCIÓN DE PROBLEMAS DE ESTRUCTURAS DE DATOS I
Equipo 4
- Ruiz Estrada Montserrat
- Sanchez De La Cruz Diego Oswaldo
- Sanchez Gomez Edgardo Enrique
- Sevilla Nungaray David
- Valenciano Tadeo Jeremy Esau
- Vázquez Bojórquez Ricardo David
●
Listas estáticas 
Introducción
Es un tipo de dato abstracto que almacena información, de manera continua, del mismo
tipo de datos, los elementos dentro de la lista no necesariamente pueden estar
ordenados.
Los elementos de la lista pueden ser insertados en cualquier parte de la lista, así
mismo, la eliminación de algún elemento de la lista puede efectuarse en cualquier parte
de la misma, siempre y cuando se reasignen los elementos para cumplir con el
almacenamiento continuo.
Algunos de los métodos más comunes en las listas son:
1
1. Archivo main
Comenzamos añadiendo la librería estándar <iostream> y el namespace std, después
incluimos la librería menu.h la cual contendrá la declaración de nuestro objeto de tipo
menú.
2. Función main
Dentro de nuestra función main declararemos un objeto de tipo menú con el cual
podremos mostrar todas las opciones que nuestro programa podrá realizar como lo
son: Insertar, agregar, buscar, eliminar, vacía, llena, mostrar . Después con ayuda
de un bucle podremos evaluar la opción que digite el usuario con nuestra función
evaluateMenu().
2
3. Archivo cabecera list.h
Al inicio de nuestro archivo list.h contamos con la inclusión de la librería <iostream>
así como de la librería string las cuales nos ayudaran con el manejo de datos de tipo
string. Después incluiremos la cabecera error.h la cual será la encargada de mostrar
los errores en caso de que se encuentren: insuficiencia de datos en nuestra lista o
desbordamiento de datos en nuestra lista.
Declaración de nuestra Lista
3
Atributos privados:
Al declarar nuestra clase llamada List, incluiremos nuestros atributos de manera
privada los cuales serán un arreglo de Strings llamado data con un tamaño máximo
previamente definido. Después declararemos un contador y una variable llamada last
la cual se encargará de guardar el índice del último elemento de nuestro arreglo de
strings.
Métodos públicos y constructores:
Contaremos con 2 constructores uno parametrizado y otro constructor sin
parámetros, después haremos una sobrecarga del operador de asignación el cual
modificara el comportamiento de nuestro operador al momento de la asignación sólo
entre datos de tipo lista.
Algunos de nuestros métodos implementados en nuestra lista serán:
● isValidPos: verifica que la posición dada sea válida
● isEmpty: verifica si la lista está vacía
● isFull: verifica si la lista está llena
● insertData: inserta un elemento en la lista
● findData: encuentra un elemento en la lista y regresa su índice
● deleteData: elimina un elemento de lista
● retrieve: recupera la posición de un elemento
● deleteAll: borra la lista
● toString: es el encargado de imprimir los elementos de la lista de manera
adecuada debido a que no podemos acceder directamente a ellos.
Implementación de los métodos de la Lista.
Métodos constructores:
En la lista se encuentran dos métodos constructores y una sobrecarga del operador de
asignación, en el constructor principal de la lista es en donde inicializamos los
atributos cont y last, el atributo last se inicializa en -1 y el de cont en 0.
4
Después de este se encuentra un constructor copia, recibe un objeto de la lista como
parámetro, y en este constructor se copiaran los datos que había en la lista dentro del
objeto recibido como parámetro.
Luego, se encuentra una sobrecarga del operador de asignación, este método
recibe una cadena tipo string como parámetro, y esta se asignará en la lista en la
posición de cont.
Validaciones de la lista:
En la lista se encuentran tres métodos de tipo booleano, uno de ellos servirá para
verificar si la posición escogida por el usuario es una posición valida, para eso evaluará
si la posición es mayor o igual a cero y si la posición es menor o igual a last, si esto es
correcto, retorna verdadero y sino retorna falso. El segundo método de validación
servirá para verificar si la lista está vacía, para esto se evaluará si last es igual a -1, y
al igual que el anterior, si es cierto retorna verdadero y sino retorna falso. En el
segundo y último método de validación, se verificara si la lista está llena, para esto se
evaluará si last es igual al tamaño de la lista -1.
5
Implementación de las operaciones de la Lista.
Operación de insertar:
Este método sirve para insertar el nombre dentro de la lista, en la posición escogida por
el usuario. El método recibe un parámetro de tipo entero para la posición y una cadena
string para el nombre, lo primero que hay en el método es una validación que ayudará
a verificar si la lista está llena, si esto sucede el programa ejecutará una excepción y
pondrá un mensaje que diga que hay un desbordamiento de datos, sino sigue con lo
siguiente, que es validar si la lista está vacía y si la posición dada por el usuario es
válida, sino es válida se ejecutará una excepción que le dirá al usuario que la
posición no es válida. Luego de estas evaluaciones, se declarara una variable de tipo
entero i y se inicializará con el valor que tenga last, luego se pondrá una iteración
while que continuará su recorrido mientras que la variable i sea mayor a la posición
recibida, lo que pasa dentro de esta iteración es que se copiaran todos los datos de la
lista de la posición i, dentro de la misma lista pero en la posición i+1, y se
decrementará i hasta que se detenga la iteración. Una vez se detenga el proceso de
copiado, se guardará el nombre dado por el usuario dentro de la lista en la posición
escogida por el usuario y last se incrementará en 1.
6
Operación de encontrar:
En la implementación de este método, tenemos que recibe una cadena string como
parámetro, luego se declara una variable de tipo entero i, que se inicializará con un
cero. Después, se pondrá una iteración while que seguirá su recorrido mientras que i
sea menor o igual a last, dentro de esta iteración, se evaluará si alguno de los nombres
dentro de la lista coinciden con el que se recibio como parámetro de parte del usuario,
si esto se cumple, la posición que haya coincidido se retornará, sino se retornara -1,
que significa que el nombre no se encuentre en la lista.
Operación de eliminar:
En la implementación de este método, tenemos que recibe un parámetro de tipo entero,
que será una posición escogida por el usuario para eliminar. Primero se evalúa si la
posición dada por el usuario es una posición válida, sino el válida se lanza una
excepción que le dirá al usuario que la posición no es válida, sino a continuación se
declara una variable de tipo entero i, y se inicializará con el valor de la posición
escogida por el usuario, luego se pone una iteración while, que seguirá su recorrido
mientras que i menor a last, dentro de esta iteración se hará un proceso de copia
similar al de la operación de insertar, solo que en este caso los nombre que haya en la
posición i+1 de la lista, se copiaran a la misma lista pero en la posición i. Una vez
terminado el proceso de copiado, last se decrementa en 1.
7
Operación de recuperar:
En la implementación de este método, tenemos que recibe un parámetro de tipo entero
que será una posición escogida por el usuario, luego se evalúa si la posición escogida
es una posición válida, si es inválida, se ejecutará una excepción y dará un mensaje de
que la posición es invalida, pero si es válida, entonces se retorna el valor que haya
dentro de la lista en la posición recibida como parámetro.
8
Operación de primera:
Este método sirve para retornar la primera posición de la lista, la implementación de
esta es bastante simple, ya que solo evalúa si la lista está vacía, si es verdadero,
entonces se retornara que la primera posición es -1, sino entonces es 0.
Operación de última:
Este métodosirve para retornar la última posición de la lista, esta es incluso más
simple que la anterior, ya que esta solo retorna el valor que haya en el atributo last.
Operación de previa:
Este método sirve para retornar una posición previa a la que escoja el usuario, para la
implementación de este método, tenemos que recibe un parámetro de tipo entero para
la posición escogida por el usuario, luego dentro de este metodo evaluara si la posición
recibida es igual a la primera posición o si es una posición válida, si esto es cierto se
retorna que la posición previa es -1, sino entonces se retorna el valor de la posición
escogida -1, osea la posición previa.
9
Operación de siguiente:
Este método sirve para retornar una posición posterior a la que escoja el usuario, la
implementación de este método funciona igual al anterior, solo que en este caso sino
se cumple con la primera evaluación, entonces retorna el valor de la posición escogida
+1, osea la posición posterior a la escogida.
Operación de borrar todo:
La implementación de este método es simple, ya que lo único que hace es asignarle
denuevo -1 a last.
10
Método toString:
Este método es el que nos ayudará a darle un formato de impresión a los datos dentro
de la lista, al momento de imprimirlos en pantalla. En la implementación de este
método, primero se declara una cadena string que servirá para realizar el formato y
concatenación de los datos y luego retornarse, luego se declarara una variable de tipo
entero i, y se inicializará con un 0. A continuación, hay una iteración while que
continuará su recorrido mientras que i sea menor o igual a last, dentro de esta iteración
se realizará el proceso de concatenación, y una vez termine el proceso se retorna la
cadena resultante.
11
4. Archivo cabecera menu.h
Atributos privados:
Dentro de nuestra clase Menu contamos con el atributo privado llamado myList que es
de tipo List, el cual será el encargado de definir la estructura de nuestra lista, por otra
parte tenemos un contador y finalmente una variable de tipo string la cual nos ayudará
como variable auxiliar para nuestra Lista.
Métodos públicos y constructores:
Contaremos con 2 constructores uno parametrizado y otro constructor sin
parámetros, después haremos una sobrecarga del operador de asignación el cual
modificara el comportamiento de nuestro operador al momento de la asignación sólo
entre datos de tipo Menú.
12
Algunos de nuestros métodos implementados en nuestra lista serán:
● captureData: Se encargará de capturar y almacenar el string que ingrese el
usuario.
● showString: Será el encargado de mostrar todos los elementos de nuestra lista.
● findData: Este método buscará un elemento que digite el usuario en nuestra lista
y retornara la posición en donde se encuentra.
● deleteAString: Este método será el encargado de eliminar un string dado por el
usuario en nuestra lista, en caso de no coincidir con ninguno imprimirá un error.
● showMenu: será el encargado de desplegar el menú de nuestro programa así
como de almacenar la opción que seleccione el usuario.
● evaluateMenu: este método será el encargado de evaluar la opción que digito el
usuario para poder decidir qué función de las anteriores previamente explicadas
ejecutar.
5. Archivo menu.cpp
Métodos constructores:
Se encuentran dos métodos constructores y una sobrecarga del operador de
asignación, en el constructor principal de la lista es en donde inicializamos los
atributos cont y j, en 1 y 0.
Después de este se encuentra un constructor copia, recibe un objeto como
parámetro, y en este constructor se copiaran los datos que había dentro del objeto
13
recibido como parámetro.
Luego, se encuentra una sobrecarga del operador de asignación, el cual nos
ayudara a modificar el comportamiento del operador de asignación solo en objetos de
tipo Menu.
Función Capturar String
Esta función de tipo void llamada captureData es la encargada de Capturar un nuevo
nombre para ser posteriormente agregado a la lista, con ayuda de la funcion getline,
se encargará de guardar el nombre que el usuario Ingrese por medio del teclado en la
variable auxiliar llamada myString;
Función Capturar String a Buscar
Esta función de tipo void llamada findData será la encargada de capturar el dato de
tipo String que el usuario desea buscar en la lista, con ayuda de la función getline, se
encargará de guardar el nombre que el usuario Ingrese por medio del teclado en la
variable auxiliar llamada myString;
14
Función Capturar String a eliminar.
Esta función de tipo void llamada deleteString será la encargada de capturar el dato
tipo String que el usuario desea eliminar de la lista, con ayuda de la función getline
guardara la palabra en la variable auxiliar myString para posteriormente realizar una
búsqueda con el método findData en la lista y asignarle esa posición a la variable pos.
Función Mostrar Lista de Strings
Esta función de tipo void llamada showString es la encargada de mostrar toda la lista
de Strings con ayuda del método retrieve, imprimirá en pantalla la lista de Strings
mientras que nuestra variable i sea menor o igual a la última posición de la lista.
15
Función Mostrar Menú
Esta función de tipo char llamada showMenu es la encargada de mostrar las opciones
del menú al usuario para posteriormente capturar y guardarla en una variable de tipo
char llamada op, el cual retornaremos para después poder definir el comportamiento
de nuestra lista en el programa.
Función Evaluar Menú
16
Declaración de Variables:
Dentro de nuestra función llamada evaluateMenu encontraremos una variable de tipo
char opc la cual será con la que evaluemos los cases de nuestra sentencia switch.
Case Agregar a la lista
En caso de seleccionar la opción de agregar a la lista en el menú, se entrará en un
ciclo en el que se llame a la función “captureData” para añadir un nombre a la lista y se
le preguntará al usuario si desea hacer otro registro. Si la opción elegida es sí, se
repetirá el bucle, en caso contrario se acaba la función.
Case Buscar en la lista
Si se elige la opción B, el programa manda a llamar a “FindData”. Este mostrará el dato
ingresado en la posición que se ubicó mediante una coincidencia. En caso de que no
se encuentre y que la lista tenga nombres guardados, entonces se muestra un mensaje
donde se indique que no hubo resultados.
17
Case Eliminar de la lista
En caso de que se elija la opción de borrar de la lista, se llamará a la función
“deleteAString”, la cual nos ayudará a capturar un string que el usuario desea eliminar,
después de eso se ejecutará, si se cumple la condición de que el método “find data”
sea diferente a 1, se busca el string ingresado que el usuario desea borrar. Si se
encuentra alguna coincidencia, se imprimirá en pantalla que el string ha sido borrado
exitosamente.
En caso de que no se haya encontrado ningún string que coincida con el introducido
por el usuario, se imprimirá en pantalla que no se encontraron coincidencias.
Case Insertar a la lista
En caso de que elija la opción D, se llamará a la función “CaptureData”. El usuario
ingresará la posición donde deseé insertar el String. Al final de ingresar un String se
preguntará si desea agregar otro String a la lista.
18
Case Mostrar de la lista
Si se elige la opción E, se mandará a llamar la función “ShowString” la cual mostrará
en pantalla todos los nombres almacenados en la lista. En caso de que no haya, no
muestra nada.
Case Eliminar todo.
Si elige la opción F, el programa borrará todo el contenido almacenado en la lista.
Case Salir.
Si elige la opción g, el programa finalizara y en caso de no elegir la opción correcta se
imprimirá un mensaje de error.
19
20

Continuar navegando

Materiales relacionados

171 pag.
Estructuras de Datos con Java

IPN

User badge image

Todos los Materiales

66 pag.
ResumenIIC1103-2 (1)

User badge image

Central de Apuntes

114 pag.
Curso Python - Manual

Continental

User badge image

Manuel Velázquez