Académique Documents
Professionnel Documents
Culture Documents
Itsguasave.edu.mx
ESTRUCTURA DE DATOS
Competencia de la Unidad
• Comprende y aplica estructuras de datos lineales para solución de
problemas.
ESTRUCTURA DE DATOS
Estructuras Lineales
• En esta unidad se comienza el estudio de las estructuras de datos dinámicas.
Al contrario que las estructuras de datos estáticas (arrays) en las que su
tamaño en memoria se establece durante la compilación y permanece
inalterable durante la ejecución del programa, las estructuras de datos
dinámicas crecen y se contraen a medida que se ejecuta el programa, por lo
que la cantidad de memoria que requieren para funcionar es muy variable.
PILAS
ESTRUCTURA DE DATOS
PILAS
PILA: Es un conjunto de elementos que solo pueden insertarse y
eliminarse por un extremo. Se trata de una estructura de datos de
acceso restrictivo a sus elementos.
Un ejemplo de pila es una torre de discos compactos, en la cual los
discos se insertan y se extraen por el mismo extremo.
ESTRUCTURA DE DATOS
• En la computación estas estructuras suelen ser fundamentales. La recursividad
se simula en un computador con la ayuda de una pila. Asimismo muchos
algoritmos emplean las pilas como estructura de datos fundamental, por
ejemplo para mantener una lista de tareas pendientes que se van acumulando.
• Las pilas ofrecen dos operaciones fundamentales, que son apilar y desapilar
sobre la cima. El uso que se les de a las pilas es independiente de su
implementación interna. Es decir, se hace un encapsulamiento. Por eso se
considera a la pila como un tipo abstracto de datos.
• Es una estructura de tipo LIFO (Last In First Out), es decir, último en entrar,
primero en salir.
ESTRUCTURA DE DATOS
ELEMENTOS DE UNA PILA
• Tope o cima: Indica el último elemento insertado en la pila.
• Máximo: Se refiere al número de elementos que puede contener la pila.
ESTRUCTURA DE DATOS
• Pilas con Arreglos: Representar pilas usando arreglos es relativamente más
sencillo que usando listas enlazadas, el único problema que existe es la
limitante de espacio en memoria, ya que al definir un tamaño máximo ya no es
posible insertar más elementos.
ESTRUCTURA DE DATOS
• Pilas con Listas enlazadas: Son llamadas también estructuras dinámicas, ya
que el espacio en memoria se crea hasta que se inserta el elemento.
ESTRUCTURA DE DATOS
OPERACIONES CON PILAS
Insertar un elemento Eliminar un elemento
Algoritmo
FUNCION boolena llena()
SI (tope == maximo – 1)
regresar verdadero
SINO
regresar falso
FINSI
FINFUNCION
ESTRUCTURA DE DATOS
VERIFICAR SI LA PILA ESTA VACIA
Algoritmo
FUNCION boolena vacia()
SI (tope == – 1)
regresar verdadero
SINO
regresar falso
FINSI
FINFUNCION
ESTRUCTURA DE DATOS
INSERTAR ELEMENTO EN LA PILA
Algoritmo
MODULO insertar() {
SI LA PILA ESTA LLENA
MOSTRAR “Pila llena”
SINO
CAPTURAR ELEMENTO
INCREMENTAR tope EN 1
pila[tope]=ELEMENTO;
FINSI
FINMODULO
ESTRUCTURA DE DATOS
ELIMINAR ELEMENTO EN LA PILA
Algoritmo
MODULO eliminar() {
SI LA PILA ESTA VACIA
MOSTRAR “Pila Vacia”
SINO
MOSTRAR CONTENIDO
ELIMINAR ELEMENTO
DECREMENTAR TOPE EN 1
FINSI
FINMODULO
ESTRUCTURA DE DATOS
RECORRIDO DE UNA PILA
Algoritmo
MODULO recorrer() {
DECLARAR var de trabajo
SI LA PILA ESTA VACIA
MOSTRAR “Pila Vacia”
SINO
MIENTRAS var<=tope
MOSTRAR CONTENIDO
INCREMENTAR var en 1
FINMIENTRAS
FINSI
FINMODULO
ESTRUCTURA DE DATOS
• Ejercicio: Desarrolle el programa correspondiente a la PILA que se ha visto en
clase creando un menú que contemple las siguientes opciones:
1. Pila llena
2. Pila vacía
3. Insertar
4. Eliminar
5. Recorrido
6. Terminar
COLAS
ESTRUCTURA DE DATOS
Definición de COLAS
Una COLA es un conjunto homogéneo de elementos, del cual
pueden suprimirse elementos sólo desde un extremo llamado
parte delantera, asimismo, sólo pueden agregarse elementos en
el extremo contrario llamado parte posterior.
Parte
Delantera o
Salida
Parte
Posterior o
Entrada
ESTRUCTURA DE DATOS
ALGORITMO
FUNCION BOLEANA llena ()
SI (final >= maximo - 1 ) ENTONCES
REGRESAR verdadero
SINO
REGRESAR falso
FINSI
FINFUNCION
ESTRUCTURA DE DATOS
ALGORITMO PARA DETERMINAR SI LA COLA ESTÁ VACIA
ALGORITMO
FUNCION BOLEANA vacia ()
SI (final < 0) ENTONCES
REGRESAR verdadero
SINO
REGRESAR falso
FINSI
FINFUNCION
ESTRUCTURA DE DATOS
ALGORITMO PARA INSERTAR ELEMENTO EN LA COLA
ALGORITMO
MODULO insertar(DATO)
SI (llena) ENTONCES
IMPRIME “cola llena”
SINO
incrementar final
cola[final]=DATO
FINSI
FINMODULO
ESTRUCTURA DE DATOS
ALGORITMO PARA ELIMINAR ELEMENTO EN LA COLA
ALGORITMO
MODULO eliminar ()
SI (vacia) ENTONCES
IMPRIME “cola vacia”
SINO
FOR (J=0, J<máximo, j++)
cola[j]=cola[j+1]
FINFOR
FINSI
DECREMENTAR final
FINMODULO
ESTRUCTURA DE DATOS
ALGORITMO PARA HACER RECORRIDO DE COLA
ALGORITMO
MODULO recorrer ()
SI (vacia) ENTONCES
IMPRIME “cola vacia”
SINO
FOR (J=0, J<=final, j++)
imprime cola[j]
FINFOR
FINSI
FINMODULO
ESTRUCTURA DE DATOS
• Ejercicio: Desarrolle el programa correspondiente a la COLA que se ha visto en
clase creando un menú que contemple las siguientes opciones:
1. Cola llena
2. Cola vacía
3. Insertar
4. Eliminar
5. Recorrido
6. Salir
• Nota: Cada vez que se desee eliminar un elemento debe verificarse la cantidad
que se desea eliminar: si es menor al valor del elemento en la parte delantera
de la cola deberá restarse pero sin eliminar el elemento; si es mayor debe
eliminarse y el faltante restarlo del siguiente elemento en la cola a manera de
un inventario de almacén.
ESTRUCTURA DE DATOS
LISTAS ENLAZADAS
ESTRUCTURA DE DATOS
• Una lista enlazada es una colección o secuencia de elementos dispuestos uno
detrás de otro, en la que cada elemento se conecta al siguiente elemento por
un “enlace”.
• La idea básica consiste en construir una lista cuyos elementos, llamados
nodos, se componen de dos partes o campos:
La primera parte contiene la información y es, por consiguiente, un valor
de un tipo genérico (denominado Dato, TipoElemento, Info, etc.);
La segunda parte es un enlace que apunta al siguiente nodo de la lista.
ESTRUCTURA DE DATOS
• La representación gráfica más extendida es aquella que utiliza una caja con dos
secciones en su interior. En la primera sección se encuentra el elemento o
valor a almacenar y en la segunda sección el enlace o puntero, representado
mediante una flecha que sale de la caja y apunta al siguiente nodo.
ESTRUCTURA DE DATOS
Clasificación de las listas enlazadas
SI cabeza==NULL
crear nuevo nodo inicial
asignar datos al campo correspondiente
asignar NULL a la variable apuntador
SINO
reservar memoria y crear nuevo nodo
asignar datos al campo correspondiente
enlazar el nodo actual con el nodo cabeza
igualar nodo cabeza al nodo actual
FINSI
ESTRUCTURA DE DATOS
CÓDIGO DE INSERCIÓN DE NODOS AL INICIO DE LA LISTA O
NODO CABEZA.
Crea nodo
cabeza
Cuando no hay
ningún nodo en
la lista
Reserva memoria y
Cuando ya crea el nodo
existe un nodo
CABEZA, se Asigna Datos
agrega el nuevo
al inicio
Nuevo nodo apunta
al nodo inicial
Convierte el nuevo
nodo en nodo CABEZA
ESTRUCTURA DE DATOS
ELIMINAR UN NODO DE LA LISTA SI (DATO == cabeza-> info)
hacer auxiliar = nodo inicial
• Para eliminar un nodo de la lista hacer nodo cabeza= auxiliar->siguiente
debemos verificar primero si se eliminar(auxiliar)
trata del nodo cabeza o de un SINO
anterior = cabeza
nodo subsecuente. actual = cabeza->siguiente
• Para realizar esta eliminación MIENTRAS (actual != NULL && actual->info != DATO)
anterior = actual
son necesarios 3 variables actual = actual->siguiente
auxiliares tipo nodo: auxiliar, FINMIENTRAS
actual, anterior SI (actual != NULL)
auxiliar = actual
• A continuación se presenta el anterior->siguiente = actual->siguiente
algoritmo para hacer dicha eliminar(auxiliar)
verificación y la posterior SI (anterior->siguiente ==NULL) T=anterior FINSI
FINSI
eliminación; FINSI
ESTRUCTURA DE DATOS
CÓDIGO DE ELIMINACIÓN
DE UN NODO DE LA LISTA
ESTRUCTURA DE DATOS
• Ejercicio: Realizar el programa completo con listas enlazadas simples.
Debe incluir menú de opciones;
Debe incluir módulo de captura de Nodo de Inicio o Nodo Cabeza;
Debe poder capturar Nodo Cola;
Debe poder insertar un nuevo Nodo Cabeza;
Debe poder eliminar un nodo seleccionado;
Debe incluir un recorrido desde el Nodo Cabeza hasta el Nodo Cola
mostrando el promedio los elementos contenidos y el número de nodos
de la lista;
• Entregar el programa
ESTRUCTURA DE DATOS
TRABAJANDO CON LISTAS DE DOBLE ENLACE Y CIRCULARES
• Lo primero que debemos hacer es crear una estructura apropiada que refleje
doble enlace que puede ser circular.
La variable tipo apuntador
se dirigen el flujo de la lista
en ambos sentidos y
también pueden generar
una estructura circular.
ESTRUCTURA DE DATOS
INSERTAR NODO INICIAL O CABECERA DE LA LISTA