Estructura de Datos Pilas Una pila es una

  • Slides: 31
Download presentation
Estructura de Datos Pilas Una pila, es una estructura de datos en la que

Estructura de Datos Pilas Una pila, es una estructura de datos en la que el último elemento en entrar es el primero en salir, por lo que también se denominan estructuras LIFO (Last In, First Out) o también estructuras lineales con una política UEPS (Ultimo en entrar, primero en salir). En esta estructura sólo se tiene acceso a la cabeza o cima de la pila, también solo se pueden insertar elementos en la pila cuando esta tiene espacio y solo se pueden extraer elementos de la pila cuando tenga valores. Instituto Tecnológico de Altamira UNIDAD 3. - ESTRUCTURAS LINEALES

Estructura de Datos Las operaciones básicas en una pila son push y pop ·

Estructura de Datos Las operaciones básicas en una pila son push y pop · - Push me permite insertar un elemento a la pila · - Pop extrae un elemento de la pila La forma de implementar una pila es a través de: · - Por medio de un arreglo unidimensional · - A través de la clase Stack de la java. util. * · - Con una lista de elementos. Ejercicio 1. Implementar una pila y cada una de sus operaciones a través de un arreglo unidimensional. Instituto Tecnológico de Altamira Representación grafica de la operación de una pila

Pilas a través de la clase Stack (Pila) es una subclase de Vector que

Pilas a través de la clase Stack (Pila) es una subclase de Vector que implementa una pila estándar; ultimo en entrar, primero en salir. Stack solo define el constructor por defecto, que crea una pila vacía. Stack incluye todos los métodos definidos por vector y añade varios métodos propios: El error que marca en caso de que se quiera sacar un elemento y que la pila ya esta vacía es Empty. Stack. Exception. Ejercicio 2. Realizar una aplicación que muestre el uso de la clase Stack y de cada una de las operaciones de la pila estándar. Instituto Tecnológico de Altamira Estructura de Datos

Estructura de Datos Declaración de la pila usando Stack Ingresar elemento a la pila

Estructura de Datos Declaración de la pila usando Stack Ingresar elemento a la pila 1. push(Integer. to. String(i)); Extraer elemento de la pila 1. pop(); Verificar si la pila esta vacía pila 1. is. Empty() Instituto Tecnológico de Altamira Stack<String> pila 1 = new Stack<String>();

Estructura de Datos Obtener el numero de caracteres dentro de una cadena Obtener un

Estructura de Datos Obtener el numero de caracteres dentro de una cadena Obtener un carácter de una cadena. char. At(i) Leer del teclado Scanner scan = new Scanner(System. in); cadena = scan. next. Line(); Instituto Tecnológico de Altamira cadena. length()

Estructura de Datos Proceso: a) Leer cadena de entrada o definir una cadena a

Estructura de Datos Proceso: a) Leer cadena de entrada o definir una cadena a imprimir al revés. b) Convertir la cadena a caracteres c) Insertarla en la Pila los caracteres de la cadena(Push) d) Imprimir la cadena sacando los valores de la Pila mediante Pop. Instituto Tecnológico de Altamira Ejercicios de Pila Realizar un programa que imprima una cadena de entrada a través de una pila (Utilizando la clase Stack).

El juego consiste en pasar todos los discos a otra de las columnas y

El juego consiste en pasar todos los discos a otra de las columnas y dejarlos acomodados como estaban: de mayor a menor. Instituto Tecnológico de Altamira Estructura de Datos

Estructura de Datos • Sólo se puede mover un disco cada vez. • 2

Estructura de Datos • Sólo se puede mover un disco cada vez. • 2 Para cambiar los discos de lugar se pueden usar las tres columnas del juego; es decir que los distintos discos se pueden ir acomodando en las columnas según convenga. • 3 Nunca deberá quedar un disco grande sobre un disco chico. Instituto Tecnológico de Altamira Las reglas del juego son las siguientes:

Estructura de Datos Instituto Tecnológico de Altamira Colas Una cola, es una estructura de

Estructura de Datos Instituto Tecnológico de Altamira Colas Una cola, es una estructura de datos lineal que permite almacenar elementos por un extremo y extraerlos por el otro. Por tal motivo, es una estructura FIFO (first in, first out: primero en entrar, primero en salir).

Al igual que en las pilas, se debe tener el control de la cola,

Al igual que en las pilas, se debe tener el control de la cola, tomando en cuenta de que si se quiere extraer un elemento de la cola se debe asegurar de que no esté vacía, o si se quiere insertar un elemento se debe asegurar de que la cola no esté llena, estas dos acciones se deben desarrollar al hacer operaciones con una cola. Las operaciones que aplican a una cola son: - Crear una cola. - Revisar si la cola está vacía. - Revisar si la cola está llena. - Insertar un elemento en la cola. - Extraer un elemento de la cola. - Revisar cuál es el siguiente elemento en la cola. Instituto Tecnológico de Altamira Estructura de Datos

Instituto Tecnológico de Altamira Estructura de Datos Si se quiere insertar otro elemento en

Instituto Tecnológico de Altamira Estructura de Datos Si se quiere insertar otro elemento en la cola entonces debe de marcar cola llena, ya que no hay espacio para almacenar ningún otro valor

Instituto Tecnológico de Altamira Estructura de Datos

Instituto Tecnológico de Altamira Estructura de Datos

Colas Circulares. Una cola circular es una estructura de datos lineal que hace un

Colas Circulares. Una cola circular es una estructura de datos lineal que hace un uso más eficiente de la memoria disponible para su almacenamiento, sin la necesidad de requerir más espacio, utilizando el que este desocupado. La cola se controla en forma circular, es decir, el elemento anterior al primero es el último. Instituto Tecnológico de Altamira Estructura de Datos

Estructura de Datos Tomando en cuenta que en una cola simple se controlan las

Estructura de Datos Tomando en cuenta que en una cola simple se controlan las operaciones cola vacía y cola llena, en una cola circular también se deben controlar estos dos aspectos. - La cola circular está vacía cuando el inicio de la cola se encuentra fuera del arreglo. - La cola circular está llena cuando el inicio se localiza en la primera posición y el fin se encuentra una posición entes del tamaño del arreglo o cuando la posición del inicio es igual al fin más uno. Instituto Tecnológico de Altamira Para crear una cola circular se debe tener el control de tres puntos dentro de la cola que son: - La posición del primer elemento en la cola (inicio), - La posición del último elemento en la cola (final) y - El tamaño de la cola (máximo)

Instituto Tecnológico de Altamira Estructura de Datos

Instituto Tecnológico de Altamira Estructura de Datos

Ejercicio. Utilizar un arreglo unidimensional para crear una cola circular en donde se puedan

Ejercicio. Utilizar un arreglo unidimensional para crear una cola circular en donde se puedan realizar las operaciones que aplican a una cola, como son: tamaño, borrar, insertar, extraer, siguiente, mostrar y salir. Instituto Tecnológico de Altamira Estructura de Datos

Estructura de Datos Una lista enlazada o estructura ligada, es una estructura lineal que

Estructura de Datos Una lista enlazada o estructura ligada, es una estructura lineal que almacena una colección de elementos generalmente llamados nodos, en donde cada nodo puede almacenar datos y ligas a otros nodos. De esta manera los nodos pueden localizarse en cualquier parte de la memoria, utilizando la referencia que lo relaciona con otro nodo dentro de la estructura. Las listas enlazadas son estructuras dinámicas que se utilizan para almacenar datos que están cambiando constante mente. A diferencia de los vectores, las estructuras dinámicas se expanden y se contraen haciéndolas más flexibles a la hora de añadir o eliminar información. Instituto Tecnológico de Altamira Listas enlazadas

Estructura de Datos Estos nodos poseen dos campos uno para almacenar la información o

Estructura de Datos Estos nodos poseen dos campos uno para almacenar la información o valor del elemento y otro para el enlace que determina la posición del siguiente elemento o nodo de la lista. Lo más recomendable y flexible para la creación de un nodo es utilizar un objeto por cada nodo, para ello debe comprender cuatro conceptos fundamentales que son: • Clase auto-referenciada, • Nodo, • Campo de enlace y • Enlace Instituto Tecnológico de Altamira Las listas enlazadas permiten almacenar información en posiciones de memoria que no sean contiguas; para almacenar la información contienen elementos llamados nodos.

 Una clase auto-referenciada es una clase con al menos un campo cuyo tipo

Una clase auto-referenciada es una clase con al menos un campo cuyo tipo de referencia es el nombre de la misma clase. public clase Nodo { Object elemento; Nodo siguiente; //métodos } El código anterior es una clase auto-referenciada porque su campo siguiente tiene el tipo Nodo. El nodo es un objeto creado a partir de una clase auto-referenciada. El campo de enlace es la variable de instancia que contiene el tipo que corresponde con el nombre de la clase (para el caso anterior variable siguiente). El enlace es el contenido del campo de enlace, que hace referencia (guarda la dirección) a otro nodo. Instituto Tecnológico de Altamira Estructura de Datos

Las operaciones que se pueden hacer con una lista son: • Inserción de un

Las operaciones que se pueden hacer con una lista son: • Inserción de un elemento. • Borrado de un elemento. • Recorrido de la lista. • Búsqueda de un elemento. Las listas enlazadas se dividen en: • Listas enlazadas simples (con una sola dirección) y • Listas enlazadas dobles (con dos direcciones). Instituto Tecnológico de Altamira Estructura de Datos

Estructura de Datos Una lista enlazada simple es una colección de nodos que tienen

Estructura de Datos Una lista enlazada simple es una colección de nodos que tienen una sola dirección y que en conjunto forman una estructura de datos lineal. Cada nodo es un objeto compuesto que guarda una referencia a un elemento (dato) y una referencia a otro nodo (dirección). La referencia que guarda un nodo a otro nodo se puede considerar un enlace o un puntero hacia el segundo nodo y el salto que los relaciona recibe el nombre de salto de enlace o salto de puntero. El primer nodo de una lista recibe el nombre de cabeza, cabecera o primero y el último es llamado final, cola o último (es el único nodo con la referencia a otro objeto como nula). Instituto Tecnológico de Altamira Listas Simples

Estructura de Datos cabeza final Los elementos cabeza y final de la figura son

Estructura de Datos cabeza final Los elementos cabeza y final de la figura son referencia creadas a partir de la clase que se crean los nodos. Instituto Tecnológico de Altamira Un nodo de una lista enlazada simple puede determinar quien se encuentra después de él pero no puede determinar quien se encuentra antes, ya que solo cuenta con la dirección del nodo siguiente pero no del anterior.

Estructura de Datos Al final de la lista • Verificar si la lista está

Estructura de Datos Al final de la lista • Verificar si la lista está vacía o Si está vacía la lista es decir inicio==null § Se crea un nuevo nodo o se asigna un nuevo nodo al inicio § Final se hace que apunte también al inicio ya que es el único nodo. o Si ya existe por lo menos un nodo § Se crea o se asigna un nuevo nodo a fin. sig=nuevo; § Final se hace que apunte al nuevo nodo ya que ahora sera el final. Al inicio de la lista • Verificar si la lista está vacía o Si está vacía la lista es decir inicio==null § Se crea un nuevo nodo o se asigna un nuevo nodo al inicio § Final se hace que apunte también al inicio ya que es el único nodo. o Si ya existe por lo menos un nodo § Se crea un nodo que se hace que apunte al inicio nuevo. sig=inicio § Se hace que inicio ahora apunte al primer elemento que es nuevo inicio=nuevo Instituto Tecnológico de Altamira Operaciones (Inserción de elementos)

En alguna posición especifica • Verificar si la lista está vacía o posición es

En alguna posición especifica • Verificar si la lista está vacía o posición es igual a cero o Si está vacía la lista es decir inicio==null § Se crea un nuevo nodo o se asigna un nuevo nodo al inicio § Final se hace que apunte también al inicio ya que es el único nodo. o Si ya existe por lo menos un nodo § Se recorre la lista contando las posiciones de los elementos dentro de la lista (pos++), además se debe de recorrer conociendo el nodo anterior y el siguiente con el fin de reorganizar la lista al insertar un nuevo elemento. § Si se localiza la posición buscada y siguiente es diferente de null. if(cont==posi && sig!=null) • Se crea un nuevo nodo y se hace que apunte al siguiente nodo y además que el nodo anterior apunte al nuevo nodo. nuevo. sig=sig y ant. sig=nuevo. § Si no se localiza la posición (indica que se dio una posición mayor a la cantidad de elementos, entonces se agrega el elemento al final de la lista. Instituto Tecnológico de Altamira Estructura de Datos

Eliminación de elementos Del inicio de la Lista • Verificar si la lista está

Eliminación de elementos Del inicio de la Lista • Verificar si la lista está vacía o Verificar si hay un solo nodo § Si hay un solo nodo se pone ini=fin=null o Si hay más de un nodo § El inicio es ahora el siguiente ini=ini. sig Del final de la Lista • Verificar si la lista está vacía o Verificar si hay un solo nodo § Si hay un solo nodo se pone ini=fin=null o Si hay más de un nodo § Se debe recorrer la lista llevando el anterior y el siguiente mientras que anterior. sig sea diferente del final o del siguiente. (debe de construir primero el nodo anterior para poder comparar con siguiente) § Al llegar al final entonces el anterior se debe de poner como final, y a final. sig como null Instituto Tecnológico de Altamira Estructura de Datos

Eliminar De cierta posición • Verificar si la lista está vacía o Verificar si

Eliminar De cierta posición • Verificar si la lista está vacía o Verificar si hay un solo nodo § Si hay un solo nodo se pone ini=fin=null o Si hay más de un nodo § Se debe recorrer la lista llevando el anterior, siguiente y el contador de las posiciones mientras que siguiente sea diferente de null. § Si cont==0 entonces se elimina del inicio § En otro caso si cont==pose y además sig!=null se pone a anterior. sig la dirección de siguiente. sig para eliminar a siguiente. § También hay que verificar si es el último elemento para ponerlo como final si anterior. sig==null entonces se debe poner como final. fin=ant; § Si no se localiza la posición se elimina del final de la lista Instituto Tecnológico de Altamira Estructura de Datos

Estructura de Datos Una lista enlazada doble es una colección de nodos que cuentan

Estructura de Datos Una lista enlazada doble es una colección de nodos que cuentan con dos direcciones en cada uno de sus nodos y que en conjunto forman una estructura de datos lineal. Cada nodo es un objeto compuesto que guarda una referencia a un elemento (dato), una referencia al nodo anterior (dirección predecesora) y una referencia al nodo siguiente (dirección sucesora). Un nodo de una lista enlazada doble puede determinar quien se encuentra después de él y quien se encuentra antes de él, ya que cuenta con las direcciones de los nodos siguiente y anterior. Instituto Tecnológico de Altamira Listas Dobles

Estructura de Datos • Inserción (Al final del la lista, al inicio de la

Estructura de Datos • Inserción (Al final del la lista, al inicio de la lista y en cierta posición de la lista) • Recorrido (Por el inicio y por el final) • Eliminación (Del inicio de la lista, del final de la lista y de cierta posición de la lista). Instituto Tecnológico de Altamira Operaciones

Listas con la clase Linked. List. La clase Linked. List, permite crear una estructura

Listas con la clase Linked. List. La clase Linked. List, permite crear una estructura de datos con nodos llamada lista ligada. El objeto creado a partir de la clase Linked. List es por lo tanto una estructura flexible que crece de forma dinámica. Está estructura puede ser ideal para el manejo de pilas, colas y listas, y se encuentra definida en la librería util. Constructores de la clase Linked. List: Linked. List lista=new Linked. List(); Linked. List lista=new Linked. List(Collection colección); El primer constructor crea un objeto llamado lista que es controlado por el inicio y el final de la misma y el segundo constructor crea una lista con la colección de elementos que se pasan como argumento apoyándose de la clase Collection. Instituto Tecnológico de Altamira Estructura de Datos

Instituto Tecnológico de Altamira Estructura de Datos

Instituto Tecnológico de Altamira Estructura de Datos

Instituto Tecnológico de Altamira Estructura de Datos

Instituto Tecnológico de Altamira Estructura de Datos