SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
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
}

Mais conteúdo relacionado

Mais procurados

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
Huascar Génere
 
Lista,pilas y columnas
Lista,pilas y columnasLista,pilas y columnas
Lista,pilas y columnas
kety24
 
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
Elias Peña
 
Pilas y Colas
Pilas y ColasPilas y Colas
Pilas y Colas
Alex Pin
 

Mais procurados (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..
 

Semelhante a Estructuras lineales

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
Elias Peña
 

Semelhante 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
 
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
 
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
 

Mais de Cecilia Loeza

Mais 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

FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
El Fortí
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
JonathanCovena1
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
JonathanCovena1
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
zulyvero07
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Francisco158360
 

Último (20)

FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 

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 }