Está en la página 1de 7

INSTITUTO POLITÉCNICO NACIONAL

Escuela Superior de Ingeniería


Mecánica y Eléctrica
“Culhuacán”

Base y Estructura de Datos.

Profesor: Rodríguez Navarro Gustavo.

Alumno: Bonilla Sánchez Aldo David.

Grupo: 3EV36.

15 – Abril – 2021.
Concepto de pila.

Pila (informática).Una pila (stack en inglés) es una lista ordinal o estructura de


datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés
Last In First Out, último en entrar, primero en salir) que permite almacenar y
recuperar datos. Se aplica en multitud de ocasiones en informática debido a su
simplicidad y ordenación implícita en la propia estructura. Representación
gráfica de una pila

Para el manejo de los datos se cuenta con dos operaciones básicas: apilar
(push), que coloca un objeto en la pila, y su operación inversa, retirar (o
desapilar, pop), que retira el último elemento apilado.

En cada momento sólo se tiene acceso a la parte superior de la pila, es decir, al


último objeto apilado (denominado TOS, Top of Stack en inglés). La operación
retirar permite la obtención de este elemento, que es retirado de la pila
permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el
nuevo TOS.

Por analogía con objetos cotidianos, una operación apilar equivaldría a colocar
un plato sobre una pila de platos, y una operación retirar a retirarlo.

Las pilas suelen emplearse en los siguientes contextos:

• Evaluación de expresiones en notación postfija (notación polaca


inversa).
* Reconocedores sintácticos de lenguajes independientes del
contexto
* Implementación de recursividad.
Definicion de clase de pila.

Pila=Estructura lineal manejada siguiendo una política LIFO: Last In First Out.

➤ Tope: Posición en la que se insertan y eliminan elementos de la pila.

➤ Concepto manejado de modo cotidiano: pila de platos, bandejas, ...

➤ Operaciones de manipulación:

➭ Apilar: Añade un elemento en la posición siguiente al tope actual.

➭ Desapilar: Elimina el elemento situado en el tope.


La Pila es una estructura de datos dinámica.

➭ Su tamaño no queda definido en tiempo de compilación.

➭ Las operaciones del TAD permiten modificar su tamaño.

Una Pila es una estructura ordenada, lineal y homogénea, en la que podemos


insertar o extraer elementos en una única posición llamada Tope, siguiendo una
política LIFO.

➤ Ordenada: Los elementos se sitúan en un cierto orden. Sus valores NO tienen


porque estar ordenados.

➤ Homogénea: Todos los elementos son del mismo tipo. Pueden ser de
cualquier tipo: simple o compuesto.
Arreglos
La forma de almacenar los elementos de un arreglo es apartando una serie de
direcciones de memoria donde podamos meter todos y cada uno de los
elementos, uno al lado del otro, identificándolos con un índice ii que va
desde 00 hasta n−1n-1, donde nn es el número de elementos dentro de la
colección. De esto es que decimos cosas como "el ii-ésimo elemento de un
arreglo" o "the ii-th element of an array" en inglés. Para visualizar mejor la
estructura de un arreglo

En dicho ejemplo teníamos un arreglo A=[10, 9, 8, -142, 238] y explicamos


que cada elemento ocupaba 44 bytes (3232 bits) y teníamos 5 elementos, por lo
tanto nuestro arreglo ocupaba exactamente 2020 bytes que iban desde una
dirección xx hasta x+20x+20. En el dibujo xx está en hexadecimal y
es 0xffee0fca840 por lo que x+20=x+20=0xffee0fca854:

Cuando un arreglo dinámico es creado por primera vez, junto con la asignación
de las direcciones de memoria necesaria para almacenar los primeros
elementos, se apartan direcciones adicionales. Lo anterior permite que en el
momento que un nuevo elemento se quiera insertar existan espacios contiguos
al último elemento en haber sido agregado y de esa manera la operación
mantenga una complejidad Θ(1)Θ(1). Cuando no hay más espacios adicionales,
entonces TODO el arreglo es copiado a una nueva ubicación de memoria junto
con más espacios adicionales y esta operación tiene complejidad Θ(n)Θ(n)

los arreglos de múltiples dimensiones, es decir, arreglos de arreglos? Pues


realmente nada raro, tu tranquil@. Las operaciones
de acceso, modificación y vecinos siguen teniendo la misma complejidad
(Θ(1)Θ(1)) gracias a que la definición se sigue cumpliendo, es decir, un arreglo
multidimensional sigue siendo una "colección finita de elementos del mismo
tipo".
Listas enlazada ejemplo
implementación en POO.
Una lista es una estructura de datos secuencial. En una lista enlazada: la posición
del siguiente elemento de la estructura la determina el elemento actual. Es
necesario almacenar al menos la posición de memoria del primer elemento.
Además es dinámica, es decir, su tamaño cambia durante la ejecución del
programa.
Una lista enlazada se puede definir recursivamente de la siguiente manera:
Una lista enlazada es una estructura vacía o
Un elemento de información y un enlace hacia una lista (un nodo).
Gráficamente se suele representar así:

CLASIFICACIÓN DE LA LISTAS ENLAZADAS

Las listas se pueden dividir en 4 categorías:

Simplemente Enlazadas

Cada nodo (elemento) contiene un único enlace que conecta ese nodo al nodo
siguiente o nodo sucesor. La lista es eficiente en recorridos directos (“adelante”)

Doblemente enlazadas

Cada nodo contiene dos enlaces, uno a su nodo predecesor y el otro a su nodo
sucesor. La lista es eficiente tanto como en recorrido directo (“adelante”) como
en recorrido inverso (“atras”).

Circular simplemente enlazada

El ultimo elemento (cola) se enlaza al primer elemento (cabeza), de tal modo


que la lista puede se recorrida de modo circular (“anillo”)

Circular doblemente enlazada

El ultimo elemento se enlaza con el primer elemento y viceversa. Esta lista se


puede recorrer en modo circular tanto en dirección directa como viceversa.

DEFINICIÓN DE UNA LISTA : Una lista es una colección lineal de elementos


llamados nodos donde el orden de los mismos se establece mediante punteros
o referencias y existe un puntero/referencia especial llamado inicio para localizar
al primer elemento.
Como Funciona una Lista:

Una lista enlazada simple necesita una clase con varios campos, los campos que
contienen los datos necesarios (por ejemplo nombre y teléfono) y otro campo
que contiene un puntero a la propia a la misma clase. Este puntero se usa para
saber dónde está el siguiente nodo de la lista, para saber la posición en
memoria del siguiente elemento

public class Nodo{


// atributos
public String nombre;
public String telefono;
// puntero al siguiente nodo
public Nodo siguiente ;
// el constructor de nodos
Nodo (String nom, String tel)
{ nombre=nom;
telefono=tel;
siguiente = null;
}
}

También podría gustarte