SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
Estructuras lineales
Presentar los TAD lineales pila, cola y secuencia
Mostrar la especificación de cada uno de los TAD lineales
Descubrir implementaciones alternativas para cada uno de ellos
Ejemplos de aplicación
AEDI – I.T. Informática de Gestión – Curso 09/10
Estructuras lineales
Contenidos
1. Introducción
2. TAD Pila
2.1. Especificación
2.2. Implementación
2.3. Aplicaciones
3. TAD Cola
3.1. Especificación
3.2. Implementación
3.3. Variantes del TAD Cola
3.4. Aplicaciones
4. Secuencias
4.1. Secuencias por posición
4.2. Iteradores
AEDI – I.T. Informática de Gestión – Curso 09/10
Estructuras lineales
Bibliografía
Goodrich M. y Tamassia R., Data structures and Algorithms in
JAVA 4ª ed. John Wiley & Sons Inc. , 2006 Págs.187-203, 204-
210, 222-228, 231-241, 242-248
Lewis, J. y Chase J. Estructuras de datos con Java. Diseño de
estructuras y algoritmos. 2ª ed. Pearson. Addisson Wesley. 2006
Págs. 152-161, 166-174, 180-182, 193-205
Weiss, Mark Allen, Estructuras de datos en Java: compatible
con JAVA 2, Addisson Wesley. 2000. Págs.139-146, 395-410,
415-427
Liskov, B. y J. Guttag, Program Development in Java:
Abstraction, Specification, and Object-Oriented Design, Addison-
Wesley, 2001. Págs. 125-137
AEDI – I.T. Informática de Gestión – Curso 09/10
Estructuras lineales
Las estructuras lineales son importantes porque aparecen con mucha frecuencia en
situaciones de la vida
Ejemplos: Una cola de clientes de un banco, las instrucciones de un programa, los
caracteres de una cadena o las páginas de un libro
Características:
existe un único elemento, llamado primero,
existe un único elemento, llamado último,
cada elemento, excepto el primero, tiene un único predecesor y
cada elemento, excepto el último, tiene un único sucesor
Operaciones:
crear la estructura vacía,
insertar un elemento,
borrar un elemento y
obtener un elemento
Para definir claramente el comportamiento de la estructura es necesario determinar
en qué posición se inserta un elemento nuevo y qué elemento se borra o se
obtiene.
Principales estructuras lineales: pilas, colas y secuencias.
AEDI – I.T. Informática de Gestión – Curso 09/10
TAD Pila
Contenedor de objetos que son insertados y eliminados
de acuerdo con el principio de que el último en entrar es
el primero en salir (LIFO - Last In First Out)
Los elementos se insertan de uno en uno (push - apilar)
Los elementos se sacan en orden inverso al cual se han
insertado (pop - desapilar)
El único elemento que se puede observar es el último
insertado (tope o cima)
Entrar Salir
a1
a2
a3
Tope de
la pila
AEDI – I.T. Informática de Gestión – Curso 09/10
TAD Pila
Especificación
public class Pila <E> {
// características:
// Es una secuencia de elementos donde el último en entrar es el primero en ser eliminado
// Los objetos son modificables.
public Pila <E> ( )
// Produce: una pila vacía
public int tamaño()
// Produce: devuelve el número de elementos de la pila
public boolean esVacio()
// Produce: cierto si la pila está vacía. Falso en otro caso
public E top() throws PilaVaciaExcepcion
// Produce: si la pila está vacía lanza la excepción PilaVaciaExcepcion,
// sino devuelve el objeto más recientemente introducido
public E pop() throws PilaVaciaExcepcion
// Modifica: this
// Produce: si la pila está vacía lanza la excepción PilaVaciaExcepcion,
// sino devuelve el objeto más recientemente introducido y lo suprime de la pila
public void push (E elemento)
// Modifica: this
// Produce: añade un objeto a la pila, pasando a ser el nuevo tope
}
AEDI – I.T. Informática de Gestión – Curso 09/10
TAD Pila
Ejemplo de uso del TAD Pila
public class PruebaPila{
public static void main (String []args){
Pila<Integer> p = new Pila<Integer>();
for (int i=1; i<10;i++)
p.push(i);
System.out.println("Los elementos son: ");
while(!p.esVacio())
System.out.println(p.pop());
}
}
AEDI – I.T. Informática de Gestión – Curso 09/10
TAD Pila
Aplicaciones en la vida real:
Navegadores en Internet almacenan en una pila las direcciones
de los sitios más recientemente visitados.
Los editores de texto proporcionan normalmente un botón
deshacer que cancela las operaciones de edición recientes y
restablece el estado anterior del documento.
Aplicaciones en programación
Las pilas son una estructura de datos muy usada como
estructura auxiliar en diversos algoritmos y esquemas de
programación. Los casos más representativos son:
Palíndromo, cambio de base, etc
Solitario, Laberinto, etc. (back tracking).
Evaluación de expresiones aritméticas, conversión de notaciones
(postfija, prefija, infija)...
Recursión.
AEDI – I.T. Informática de Gestión – Curso 09/10
TAD Pila
Implementación del TAD Pila
Paso 1: Definición interfaz
public interface Pila<E>{
public int tamaño();
public boolean esVacio();
public E top() throws PilaVaciaExcepcion;
public void push (E elemento);
public E pop() throws PilaVaciaExcepcion;
}
Paso 2: Clase implemente la interfaz
Mediante arrays
public class ArrayPila<E> implements Pila<E>
Mediante listas enlazadas genéricas
public class EnlazadaPila<E> implements Pila<E>
AEDI – I.T. Informática de Gestión – Curso 09/10
TAD Pila
public class PilaVaciaExcepcion extends RuntimeException{
public PilaVaciaExcepcion (){
super();
}
public PilaVaciaExcepcion (String mensaje){
super(mensaje);
}
}
AEDI – I.T. Informática de Gestión – Curso 09/10
TAD Pila
public class ArrayPila<E> implements Pila<E>{
public static final int CAPACIDAD_POR_DEFECTO=10;
private E [] elementos;
private int tope;
Ventaja: todas las operaciones tienen coste temporal constante O(1)
Problema: pila llena
Solución:
método privado duplicarPila() -> expansión dinámica del vector
un nuevo tipo de excepción, PilaLlenaExcepcion
elementos
Tope de
la pila
a1 a2 a3 a4 ... at
0 1 2 3 tope N-1
Representación
AEDI – I.T. Informática de Gestión – Curso 09/10
TAD Pila
Representación
public class EnlazadaPila<E> implements Pila<E> {
private Nodo<E> tope;
private int contador;
Ventajas:
todas las operaciones tienen coste temporal constante O(1)
no hay limitaciones de tamaño
Tope de
la pila
AEDI – I.T. Informática de Gestión – Curso 09/10
TAD Pila
public class Nodo<E> {
private E elemento; //referencia al elemento del nodo
private Nodo<E> sig; //referencia al siguiente nodo de la lista
public Nodo(){
//Produce: crea un nodo con valor null en sus referencias al elemento y al siguiente nodo
this(null,null);
}
public Nodo(E e, Nodo<E> n){
// Produce: un objeto Nodo con el elemento y siguiente nodo que se le pasa como parámetro
elemento=e;
sig=n;
}
public void setElemento(E e){
// Modifica: this
// Produce: modifica el atributo elemento de this
elemento = e;
}
public void setSig(Nodo<E> n){
// Modifica: this
// Produce: modifica el atributo sig de this
sig = n;
}
public E getElemento(){
// Produce: devuelve el atributo elemento de this
return elemento;
}
public Nodo<E> getSig(){
// Produce: devuelve el atributo sig de this
return sig;
}
}
AEDI – I.T. Informática de Gestión – Curso 09/10
TAD Pila
public class EnlazadaPila<E> implements Pila<E> {
private Nodo<E> tope;
private int contador;
public EnlazadaPila(){
tope=null;
contador=0;
}
public int tamaño(){
return contador;
}
public boolean esVacio(){
return tope==null;
}
public E top() throws PilaVaciaExcepcion{
if (esVacio()) throw new PilaVaciaExcepcion("top: Pila Vacia");
return tope.getElemento();
}
public void push (E e){
Nodo<E> n=new Nodo<E>(e,tope);
tope=n;
contador++;
}
public E pop() throws PilaVaciaExcepcion{
if (esVacio()) throw new PilaVaciaExcepcion("pop: Pila Vacia");
E e=tope.getElemento();
tope=tope.getSig();
contador--;
return e;
}
}
AEDI – I.T. Informática de Gestión – Curso 09/10
TAD Pila
public interface Pila<E>{
public int tamaño();
public boolean esVacio();
public E top() throws PilaVaciaExcepcion;
public void push (E elemento);
public E pop() throws PilaVaciaExcepcion;
}
public class PilaVaciaExcepcion{
public PilaVaciaExcepcion(){
…
}
public PilaVaciaExcepcion(String mensaje){
…
}
}
public class ArrayPila<E> implements Pila<E>{
public static final int CAPACIDAD_POR_DEFECTO=10;
private E [] elementos;
private int tope;
public ArrayPila(){
// inicializa los atributos de la representación
}
//implementación operaciones de la interfaz
}
public class EnlazadaPila<E> implements Pila<E>{
private Nodo<E> tope;
private int contador;
public EnlazadaPila(){
// inicializa los atributos de la representación
}
//implementación operaciones de la interfaz
}
public class Nodo<E>{
private E elemento;
private Nodo<E> sig;
public Nodo(){
---
}
//resto operaciones
}

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Estructura de datos I pilas
Estructura de datos I pilasEstructura de datos I pilas
Estructura de datos I pilas
 
Fila,pila y cola ..
Fila,pila y cola ..Fila,pila y cola ..
Fila,pila y cola ..
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Apuntadores y listas
Apuntadores y listasApuntadores y listas
Apuntadores y listas
 
COLAS
COLASCOLAS
COLAS
 
Listas
ListasListas
Listas
 
Listas,pilas&colas yorka
Listas,pilas&colas yorkaListas,pilas&colas yorka
Listas,pilas&colas yorka
 
Lista,pilas y columnas
Lista,pilas y columnasLista,pilas y columnas
Lista,pilas y columnas
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colas
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
Listas y Pilas
Listas y PilasListas y Pilas
Listas y Pilas
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Presentacion pilas lista y colas
Presentacion pilas lista y colas  Presentacion pilas lista y colas
Presentacion pilas lista y colas
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Pila dinamica y pila estatica
Pila dinamica y pila estaticaPila dinamica y pila estatica
Pila dinamica y pila estatica
 
Pilas y Colas
Pilas y ColasPilas y Colas
Pilas y Colas
 
Presentacion de Listas, Pilas y Colas
Presentacion de Listas, Pilas y ColasPresentacion de Listas, Pilas y Colas
Presentacion de Listas, Pilas y Colas
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Arboles y Colas de Prioridad en Java
Arboles y Colas de Prioridad en JavaArboles y Colas de Prioridad en Java
Arboles y Colas de Prioridad en Java
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 

Similar a Estructuras lineales (20)

Unidad iii Pilas y colas
Unidad iii Pilas y colasUnidad iii Pilas y colas
Unidad iii Pilas y colas
 
Unidad iii pilas y colas
Unidad iii pilas y colasUnidad iii pilas y colas
Unidad iii pilas y colas
 
Listas pilas colas
Listas pilas colasListas pilas colas
Listas pilas colas
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colas
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
 
Cplus
CplusCplus
Cplus
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
S6-EDD-3.2 Pilas y colas
S6-EDD-3.2 Pilas y colasS6-EDD-3.2 Pilas y colas
S6-EDD-3.2 Pilas y colas
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
2- TDA Listas
2- TDA Listas2- TDA Listas
2- TDA Listas
 
Listas dinámicas y programación de objetos en java
Listas dinámicas y programación de objetos  en javaListas dinámicas y programación de objetos  en java
Listas dinámicas y programación de objetos en java
 
Implementacion
ImplementacionImplementacion
Implementacion
 
Pilas
PilasPilas
Pilas
 
P2C2 Introducción a JEE5
P2C2 Introducción a JEE5P2C2 Introducción a JEE5
P2C2 Introducción a JEE5
 
Pilas
PilasPilas
Pilas
 
Pilas
PilasPilas
Pilas
 

Más de Cecilia Loeza

10 Adivinanzas de animales, elementos de la naturaleza, objetos, frutas, verd...
10 Adivinanzas de animales, elementos de la naturaleza, objetos, frutas, verd...10 Adivinanzas de animales, elementos de la naturaleza, objetos, frutas, verd...
10 Adivinanzas de animales, elementos de la naturaleza, objetos, frutas, verd...Cecilia Loeza
 
Funciones hiperbólicas
Funciones hiperbólicasFunciones hiperbólicas
Funciones hiperbólicasCecilia Loeza
 
Sistemas lineales tablas
Sistemas lineales tablasSistemas lineales tablas
Sistemas lineales tablasCecilia Loeza
 
Fourier y sus coeficientes Cañada
Fourier y sus coeficientes CañadaFourier y sus coeficientes Cañada
Fourier y sus coeficientes CañadaCecilia Loeza
 
Variable de frecuencia compleja
Variable de frecuencia complejaVariable de frecuencia compleja
Variable de frecuencia complejaCecilia Loeza
 
Movimiento ondulatorio
Movimiento ondulatorioMovimiento ondulatorio
Movimiento ondulatorioCecilia Loeza
 
Los sistemas de informacion en la empresa nota tecnica - carlos suarez rey
Los sistemas de informacion en la empresa   nota tecnica - carlos suarez reyLos sistemas de informacion en la empresa   nota tecnica - carlos suarez rey
Los sistemas de informacion en la empresa nota tecnica - carlos suarez reyCecilia Loeza
 
Temas selectos de estructuras de datos
Temas selectos de estructuras de datosTemas selectos de estructuras de datos
Temas selectos de estructuras de datosCecilia Loeza
 
ESTADÍSTICA DESCRIPTIVA E INFERENCIAL I
ESTADÍSTICA DESCRIPTIVA E INFERENCIAL IESTADÍSTICA DESCRIPTIVA E INFERENCIAL I
ESTADÍSTICA DESCRIPTIVA E INFERENCIAL ICecilia Loeza
 
Potencial eléctricoPotencial electrico
Potencial eléctricoPotencial electricoPotencial eléctricoPotencial electrico
Potencial eléctricoPotencial electricoCecilia Loeza
 
Estadística descriptiva
Estadística descriptivaEstadística descriptiva
Estadística descriptivaCecilia Loeza
 
Matemáticas discretas
Matemáticas discretasMatemáticas discretas
Matemáticas discretasCecilia Loeza
 
Fundamentos básicos telecomunicaciones
Fundamentos básicos telecomunicacionesFundamentos básicos telecomunicaciones
Fundamentos básicos telecomunicacionesCecilia Loeza
 

Más de Cecilia Loeza (20)

10 Adivinanzas de animales, elementos de la naturaleza, objetos, frutas, verd...
10 Adivinanzas de animales, elementos de la naturaleza, objetos, frutas, verd...10 Adivinanzas de animales, elementos de la naturaleza, objetos, frutas, verd...
10 Adivinanzas de animales, elementos de la naturaleza, objetos, frutas, verd...
 
Java
JavaJava
Java
 
Funciones hiperbólicas
Funciones hiperbólicasFunciones hiperbólicas
Funciones hiperbólicas
 
Sistemas lineales tablas
Sistemas lineales tablasSistemas lineales tablas
Sistemas lineales tablas
 
Fourier y sus coeficientes Cañada
Fourier y sus coeficientes CañadaFourier y sus coeficientes Cañada
Fourier y sus coeficientes Cañada
 
Variable de frecuencia compleja
Variable de frecuencia complejaVariable de frecuencia compleja
Variable de frecuencia compleja
 
Integral de fourier
Integral de fourierIntegral de fourier
Integral de fourier
 
Resistores normales
Resistores normalesResistores normales
Resistores normales
 
Movimiento ondulatorio
Movimiento ondulatorioMovimiento ondulatorio
Movimiento ondulatorio
 
Los sistemas de informacion en la empresa nota tecnica - carlos suarez rey
Los sistemas de informacion en la empresa   nota tecnica - carlos suarez reyLos sistemas de informacion en la empresa   nota tecnica - carlos suarez rey
Los sistemas de informacion en la empresa nota tecnica - carlos suarez rey
 
Temas selectos de estructuras de datos
Temas selectos de estructuras de datosTemas selectos de estructuras de datos
Temas selectos de estructuras de datos
 
ESTADÍSTICA DESCRIPTIVA E INFERENCIAL I
ESTADÍSTICA DESCRIPTIVA E INFERENCIAL IESTADÍSTICA DESCRIPTIVA E INFERENCIAL I
ESTADÍSTICA DESCRIPTIVA E INFERENCIAL I
 
Árboles binarios
Árboles binariosÁrboles binarios
Árboles binarios
 
Autómatas
AutómatasAutómatas
Autómatas
 
Potencial eléctricoPotencial electrico
Potencial eléctricoPotencial electricoPotencial eléctricoPotencial electrico
Potencial eléctricoPotencial electrico
 
Estadística descriptiva
Estadística descriptivaEstadística descriptiva
Estadística descriptiva
 
Combinatoria
CombinatoriaCombinatoria
Combinatoria
 
Ecologia 3ra ed
Ecologia 3ra edEcologia 3ra ed
Ecologia 3ra ed
 
Matemáticas discretas
Matemáticas discretasMatemáticas discretas
Matemáticas discretas
 
Fundamentos básicos telecomunicaciones
Fundamentos básicos telecomunicacionesFundamentos básicos telecomunicaciones
Fundamentos básicos telecomunicaciones
 

Último

ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfcarolinamartinezsev
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...JoseMartinMalpartida1
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfGruberACaraballo
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxBeatrizQuijano2
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...jlorentemartos
 
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfEduardoJosVargasCama1
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!CatalinaAlfaroChryso
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresJonathanCovena1
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdfDemetrio Ccesa Rayme
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxEliaHernndez7
 

Último (20)

ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 

Estructuras lineales

  • 1. Estructuras lineales Presentar los TAD lineales pila, cola y secuencia Mostrar la especificación de cada uno de los TAD lineales Descubrir implementaciones alternativas para cada uno de ellos Ejemplos de aplicación
  • 2. AEDI – I.T. Informática de Gestión – Curso 09/10 Estructuras lineales Contenidos 1. Introducción 2. TAD Pila 2.1. Especificación 2.2. Implementación 2.3. Aplicaciones 3. TAD Cola 3.1. Especificación 3.2. Implementación 3.3. Variantes del TAD Cola 3.4. Aplicaciones 4. Secuencias 4.1. Secuencias por posición 4.2. Iteradores
  • 3. AEDI – I.T. Informática de Gestión – Curso 09/10 Estructuras lineales Bibliografía Goodrich M. y Tamassia R., Data structures and Algorithms in JAVA 4ª ed. John Wiley & Sons Inc. , 2006 Págs.187-203, 204- 210, 222-228, 231-241, 242-248 Lewis, J. y Chase J. Estructuras de datos con Java. Diseño de estructuras y algoritmos. 2ª ed. Pearson. Addisson Wesley. 2006 Págs. 152-161, 166-174, 180-182, 193-205 Weiss, Mark Allen, Estructuras de datos en Java: compatible con JAVA 2, Addisson Wesley. 2000. Págs.139-146, 395-410, 415-427 Liskov, B. y J. Guttag, Program Development in Java: Abstraction, Specification, and Object-Oriented Design, Addison- Wesley, 2001. Págs. 125-137
  • 4. AEDI – I.T. Informática de Gestión – Curso 09/10 Estructuras lineales Las estructuras lineales son importantes porque aparecen con mucha frecuencia en situaciones de la vida Ejemplos: Una cola de clientes de un banco, las instrucciones de un programa, los caracteres de una cadena o las páginas de un libro Características: existe un único elemento, llamado primero, existe un único elemento, llamado último, cada elemento, excepto el primero, tiene un único predecesor y cada elemento, excepto el último, tiene un único sucesor Operaciones: crear la estructura vacía, insertar un elemento, borrar un elemento y obtener un elemento Para definir claramente el comportamiento de la estructura es necesario determinar en qué posición se inserta un elemento nuevo y qué elemento se borra o se obtiene. Principales estructuras lineales: pilas, colas y secuencias.
  • 5. AEDI – I.T. Informática de Gestión – Curso 09/10 TAD Pila Contenedor de objetos que son insertados y eliminados de acuerdo con el principio de que el último en entrar es el primero en salir (LIFO - Last In First Out) Los elementos se insertan de uno en uno (push - apilar) Los elementos se sacan en orden inverso al cual se han insertado (pop - desapilar) El único elemento que se puede observar es el último insertado (tope o cima) Entrar Salir a1 a2 a3 Tope de la pila
  • 6. AEDI – I.T. Informática de Gestión – Curso 09/10 TAD Pila Especificación public class Pila <E> { // características: // Es una secuencia de elementos donde el último en entrar es el primero en ser eliminado // Los objetos son modificables. public Pila <E> ( ) // Produce: una pila vacía public int tamaño() // Produce: devuelve el número de elementos de la pila public boolean esVacio() // Produce: cierto si la pila está vacía. Falso en otro caso public E top() throws PilaVaciaExcepcion // Produce: si la pila está vacía lanza la excepción PilaVaciaExcepcion, // sino devuelve el objeto más recientemente introducido public E pop() throws PilaVaciaExcepcion // Modifica: this // Produce: si la pila está vacía lanza la excepción PilaVaciaExcepcion, // sino devuelve el objeto más recientemente introducido y lo suprime de la pila public void push (E elemento) // Modifica: this // Produce: añade un objeto a la pila, pasando a ser el nuevo tope }
  • 7. AEDI – I.T. Informática de Gestión – Curso 09/10 TAD Pila Ejemplo de uso del TAD Pila public class PruebaPila{ public static void main (String []args){ Pila<Integer> p = new Pila<Integer>(); for (int i=1; i<10;i++) p.push(i); System.out.println("Los elementos son: "); while(!p.esVacio()) System.out.println(p.pop()); } }
  • 8. AEDI – I.T. Informática de Gestión – Curso 09/10 TAD Pila Aplicaciones en la vida real: Navegadores en Internet almacenan en una pila las direcciones de los sitios más recientemente visitados. Los editores de texto proporcionan normalmente un botón deshacer que cancela las operaciones de edición recientes y restablece el estado anterior del documento. Aplicaciones en programación Las pilas son una estructura de datos muy usada como estructura auxiliar en diversos algoritmos y esquemas de programación. Los casos más representativos son: Palíndromo, cambio de base, etc Solitario, Laberinto, etc. (back tracking). Evaluación de expresiones aritméticas, conversión de notaciones (postfija, prefija, infija)... Recursión.
  • 9. AEDI – I.T. Informática de Gestión – Curso 09/10 TAD Pila Implementación del TAD Pila Paso 1: Definición interfaz public interface Pila<E>{ public int tamaño(); public boolean esVacio(); public E top() throws PilaVaciaExcepcion; public void push (E elemento); public E pop() throws PilaVaciaExcepcion; } Paso 2: Clase implemente la interfaz Mediante arrays public class ArrayPila<E> implements Pila<E> Mediante listas enlazadas genéricas public class EnlazadaPila<E> implements Pila<E>
  • 10. AEDI – I.T. Informática de Gestión – Curso 09/10 TAD Pila public class PilaVaciaExcepcion extends RuntimeException{ public PilaVaciaExcepcion (){ super(); } public PilaVaciaExcepcion (String mensaje){ super(mensaje); } }
  • 11. AEDI – I.T. Informática de Gestión – Curso 09/10 TAD Pila public class ArrayPila<E> implements Pila<E>{ public static final int CAPACIDAD_POR_DEFECTO=10; private E [] elementos; private int tope; Ventaja: todas las operaciones tienen coste temporal constante O(1) Problema: pila llena Solución: método privado duplicarPila() -> expansión dinámica del vector un nuevo tipo de excepción, PilaLlenaExcepcion elementos Tope de la pila a1 a2 a3 a4 ... at 0 1 2 3 tope N-1 Representación
  • 12. AEDI – I.T. Informática de Gestión – Curso 09/10 TAD Pila Representación public class EnlazadaPila<E> implements Pila<E> { private Nodo<E> tope; private int contador; Ventajas: todas las operaciones tienen coste temporal constante O(1) no hay limitaciones de tamaño Tope de la pila
  • 13. AEDI – I.T. Informática de Gestión – Curso 09/10 TAD Pila public class Nodo<E> { private E elemento; //referencia al elemento del nodo private Nodo<E> sig; //referencia al siguiente nodo de la lista public Nodo(){ //Produce: crea un nodo con valor null en sus referencias al elemento y al siguiente nodo this(null,null); } public Nodo(E e, Nodo<E> n){ // Produce: un objeto Nodo con el elemento y siguiente nodo que se le pasa como parámetro elemento=e; sig=n; } public void setElemento(E e){ // Modifica: this // Produce: modifica el atributo elemento de this elemento = e; } public void setSig(Nodo<E> n){ // Modifica: this // Produce: modifica el atributo sig de this sig = n; } public E getElemento(){ // Produce: devuelve el atributo elemento de this return elemento; } public Nodo<E> getSig(){ // Produce: devuelve el atributo sig de this return sig; } }
  • 14. AEDI – I.T. Informática de Gestión – Curso 09/10 TAD Pila public class EnlazadaPila<E> implements Pila<E> { private Nodo<E> tope; private int contador; public EnlazadaPila(){ tope=null; contador=0; } public int tamaño(){ return contador; } public boolean esVacio(){ return tope==null; } public E top() throws PilaVaciaExcepcion{ if (esVacio()) throw new PilaVaciaExcepcion("top: Pila Vacia"); return tope.getElemento(); } public void push (E e){ Nodo<E> n=new Nodo<E>(e,tope); tope=n; contador++; } public E pop() throws PilaVaciaExcepcion{ if (esVacio()) throw new PilaVaciaExcepcion("pop: Pila Vacia"); E e=tope.getElemento(); tope=tope.getSig(); contador--; return e; } }
  • 15. AEDI – I.T. Informática de Gestión – Curso 09/10 TAD Pila public interface Pila<E>{ public int tamaño(); public boolean esVacio(); public E top() throws PilaVaciaExcepcion; public void push (E elemento); public E pop() throws PilaVaciaExcepcion; } public class PilaVaciaExcepcion{ public PilaVaciaExcepcion(){ … } public PilaVaciaExcepcion(String mensaje){ … } } public class ArrayPila<E> implements Pila<E>{ public static final int CAPACIDAD_POR_DEFECTO=10; private E [] elementos; private int tope; public ArrayPila(){ // inicializa los atributos de la representación } //implementación operaciones de la interfaz } public class EnlazadaPila<E> implements Pila<E>{ private Nodo<E> tope; private int contador; public EnlazadaPila(){ // inicializa los atributos de la representación } //implementación operaciones de la interfaz } public class Nodo<E>{ private E elemento; private Nodo<E> sig; public Nodo(){ --- } //resto operaciones }