SlideShare una empresa de Scribd logo
Pilas
Colas
Listas
Estructuras de datos: Pilas, Colas, Listas
Algoritmos
Dep. de Computaci´on - Fac. de Inform´atica
Universidad de A Coru˜na
J. Santiago Jorge
sjorge@udc.es
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
´Indice
1 Pilas
2 Colas
3 Listas
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Referencias bibliogr´aficas
M. A. Weiss. Listas, pilas y colas. En Estructuras de datos y
algoritmos, cap´ıtulo 3, p´aginas 45–92. Addison-Wesley
Iberoamericana, 1995.
R. Pe˜na Mar´ı. Implementaci´on de estructuras de datos. En
Dise˜no de Programas. Formalismo y abstracci´on, cap´ıtulo 7,
p´aginas 257–290. Prentice Hall, segunda edici´on, 1998.
G. Brassard y T. Bratley. Estructura de datos. En Fundamentos
de algoritmia, cap´ıtulo 5, p´aginas 167–210. Prentice Hall, 1997.
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
´Indice
1 Pilas
2 Colas
3 Listas
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Pilas
Acceso limitado al ´ultimo elemento insertado
Operaciones b´asicas: apilar, desapilar y cima.
desapilar o cima en una pila vac´ıa es un error en el TDA pila.
Quedarse sin espacio al apilar es un error de implementaci´on.
Cada operaci´on deber´ıa tardar una cantidad constante de tiempo
en ejecutarse.
Con independencia del n´umero de elementos apiladas.
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Pseudoc´odigo: Implementaci´on a base de vectores (i)
tipo Pila = registro
Cima_de_pila : 0..Tama˜no_m´aximo_de_pila
Vector_de_pila : vector [1..Tama˜no_m´aximo_de_pila]
de Tipo_de_elemento
fin registro
procedimiento Crear Pila ( P )
P.Cima_de_pila := 0
fin procedimiento
funci´on Pila Vac´ıa ( P ) : test
devolver P.Cima_de_pila = 0
fin funci´on
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Pseudoc´odigo: Implementaci´on a base de vectores (ii)
procedimiento Apilar ( x, P )
si P.Cima_de_pila = Tama˜no_m´aximo_de_pila entonces
error Pila llena
sino
P.Cima_de_pila := P.Cima_de_pila + 1;
P.Vector_de_pila[P.Cima_de_pila] := x
fin procedimiento
funci´on Cima ( P ) : Tipo_de_elemento
si Pila Vac´ıa (P) entonces error Pila vac´ıa
sino devolver P.Vector_de_pila[P.Cima de Pila]
fin funci´on
procedimiento Desapilar ( P )
si Pila Vac´ıa (P) entonces error Pila vac´ıa
sino P.Cima_de_pila := P.Cima_de_pila - 1
fin procedimiento
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
C´odigo C: pilas.h
#ifndef TAMANO_MAXIMO_PILA
#define TAMANO_MAXIMO_PILA 10
#endif
typedef int tipo_elemento;
typedef struct {
int cima;
tipo_elemento vector[TAMANO_MAXIMO_PILA];
} pila;
void crear_pila(pila *);
int pila_vacia(pila);
void apilar(tipo_elemento, pila *);
tipo_elemento cima(pila);
void desapilar(pila *);
/* ERRORES: cima o desapilar sobre la pila vac´ıa
apilar sobre la pila llena */
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
C´odigo C: pilas.c (i)
#include <stdlib.h>
#include <stdio.h>
#include "pilas.h"
void crear_pila(pila *p) {
p->cima = -1;
}
int pila_vacia(pila p) {
return (p.cima == -1);
}
void apilar(tipo_elemento x, pila *p) {
if (++p->cima == TAMANO_MAXIMO_PILA) {
printf("error: pila llenan"); exit(EXIT_FAILURE);
}
p->vector[p->cima] = x;
}
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
C´odigo C: pilas.c (ii)
tipo_elemento cima(pila p) {
if (pila_vacia(p)) {
printf("error: pila vacian");
exit(EXIT_FAILURE);
}
return p.vector[p.cima];
}
void desapilar(pila *p) {
if (pila_vacia(*p)) {
printf("error: pila vacian");
exit(EXIT_FAILURE);
}
p->cima--;
}
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
´Indice
1 Pilas
2 Colas
3 Listas
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Colas
Operaciones b´asicas: insertar, quitarPrimero y primero.
Cada rutina deber´ıa ejecutarse en tiempo constante.
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Implementaci´on circular a base de vectores (i)
La implementaci´on circular devuelve cabeza y fin al principo del
vector cuando rebasan la ´ultima posici´on.
final
1) Crear Cola (C)
cabeza
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Implementaci´on circular a base de vectores (i)
La implementaci´on circular devuelve cabeza y fin al principo del
vector cuando rebasan la ´ultima posici´on.
final
1) Crear Cola (C)
cabeza
final
2) Insertar en Cola (a,C) a
cabeza
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Implementaci´on circular a base de vectores (i)
La implementaci´on circular devuelve cabeza y fin al principo del
vector cuando rebasan la ´ultima posici´on.
final
1) Crear Cola (C)
cabeza
final
2) Insertar en Cola (a,C) a
cabeza
final
3) Insertar en Cola (b,C) a b
cabeza
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Implementaci´on circular a base de vectores (i)
final
4) Insertar en Cola (c,C) a b c
cabeza
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Implementaci´on circular a base de vectores (i)
final
4) Insertar en Cola (c,C) a b c
cabeza
final
5) Insertar en Cola (d,C) a b c d
cabeza
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Implementaci´on circular a base de vectores (i)
final
4) Insertar en Cola (c,C) a b c
cabeza
final
5) Insertar en Cola (d,C) a b c d
cabeza
final
6) Quitar Primero (C) b c d
cabeza
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Implementaci´on circular a base de vectores (i)
final
4) Insertar en Cola (c,C) a b c
cabeza
final
5) Insertar en Cola (d,C) a b c d
cabeza
final
6) Quitar Primero (C) b c d
cabeza
final
7) Insertar en Cola (e,C) e b c d
cabeza
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Pseudoc´odigo (i)
tipo Cola = registro
Cabeza_de_cola, Final_de_cola: 1..Tama˜no_m´aximo_de_cola
Tama˜no_de_cola : 0..Tama˜no_m´aximo_de_cola
Vector_de_cola : vector [1..Tama˜no_m´aximo_de_cola]
de Tipo_de_elemento
fin registro
procedimiento Crear_Cola ( C )
C.Tama˜no_de_cola := 0;
C.Cabeza_de_cola := 1;
C.Final_de_cola := Tama˜no_m´aximo_de_cola
fin procedimiento
funci´on Cola_Vac´ıa ( C ) : test
devolver C.Tama˜no_de_cola = 0
fin funci´on
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Pseudoc´odigo (ii)
procedimiento incrementar ( x ) (* privado *)
si x = Tama˜no_m´aximo_de_cola entonces x := 1
sino x := x + 1
fin procedimiento
procedimiento Insertar_en_Cola ( x, C )
si C.Tama˜no_de_Cola = Tama˜no_m´aximo_de_cola entonces
error Cola llena
sino
C.Tama˜no_de_cola := C.Tama˜no_de_cola + 1;
incrementar(C.Final_de_cola);
C.Vector_de_cola[C.Final_de_cola] := x;
fin procedimiento
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Pseudoc´odigo (iii)
funci´on Quitar_Primero ( C ) : Tipo_de_elemento
si Cola_Vac´ıa ( C ) entonces
error Cola vac´ıa
sino
C.Tama˜no_de_cola := C.Tama˜no_de_cola - 1;
x := C.Vector_de_cola[C.Cabeza_de_cola];
incrementar(C.Cabeza_de_cola);
devolver x
fin funci´on
funci´on Primero ( C ) : Tipo_de_elemento
si Cola_Vac´ıa ( C ) entonces
error Cola vac´ıa
sino
devolver C.Vector_de_cola[C.Cabeza_de_cola]
fin funci´on
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
C´odigo C: colas.h
#ifndef TAMANO_MAXIMO_COLA
#define TAMANO_MAXIMO_COLA 5
#endif
typedef int tipo_elemento;
typedef struct {
int cabeza, final, tamano;
tipo_elemento vector[TAMANO_MAXIMO_COLA];
} cola;
void crear_cola(cola *);
int cola_vacia(cola);
void insertar(tipo_elemento, cola *);
tipo_elemento quitar_primero(cola *);
tipo_elemento primero(cola);
/* ERRORES: quitar_primero o primero sobre una cola vac´ıa
insertar en una cola llena */
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
C´odigo C: colas.c (i)
#include <stdlib.h>
#include <stdio.h>
#include "colas.h"
void crear_cola(cola *c) {
c->tamano = 0;
c->cabeza = 0;
c->final = -1;
}
int cola_vacia(cola c) {
return (c.tamano == 0);
}
void incrementar(int *x) { /* privado */
if (++(*x) == TAMANO_MAXIMO_COLA)
*x = 0;
}
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
C´odigo C: colas.c (ii)
void insertar(tipo_elemento x, cola *c) {
if (c->tamano == TAMANO_MAXIMO_COLA) {
printf("error: cola llena: %dn", c->tamano);
exit(EXIT_FAILURE);
}
c->tamano++;
incrementar(&(c->final));
c->vector[c->final] = x;
}
tipo_elemento primero(cola c) {
if (cola_vacia(c)) {
printf("error: cola vacian"); exit(EXIT_FAILURE);
}
return(c.vector[c.cabeza]);
}
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
C´odigo C: colas.c (iii)
tipo_elemento quitar_primero(cola *c) {
tipo_elemento x;
if (cola_vacia(*c)) {
printf("error: cola vacian");
exit(EXIT_FAILURE);
}
c->tamano--;
x = c->vector[c->cabeza];
incrementar(&(c->cabeza));
return x;
}
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
´Indice
1 Pilas
2 Colas
3 Listas
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Listas
Operaciones b´asicas:
Visualizar su contenido.
Buscar la posici´on de la primera ocurrencia de un elemento.
Insertar y Eliminar un elemento en alguna posici´on.
Buscar k esimo, que devuelve el elemento
de la posici´on indicada
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Implementaci´on de listas a base de vectores
Tiene que declararse el tama˜no de la lista.
Exige sobrevaloraci´on.
Consume mucho espacio.
Complejidad computacional de las operaciones:
Buscar k esimo, tiempo constante
Visualizar y Buscar, tiempo lineal.
Insertar y Eliminar son costosas.
Insertar o eliminar un elemento exige, en promedio,
desplazar la mitad de los valores, O(n).
La construcci´on de una lista o la eliminaci´on
de todos sus elementos podr´ıa exigir un tiempo cuadr´atico.
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Implementaci´on de listas a base de apuntadores
Cada nodo apunta al siguiente; el ´ultimo no apunta a nada.
La lista es un puntero al primer nodo (y al ´ultimo).
Complejidad computacional de las operaciones:
Visualizar y Buscar, tiempo lineal.
Buscar k esimo, tiempo lineal.
Eliminar realiza un cambio de apuntadores y
una orden dispose, O(1).
Usa Buscar anterior cuyo tiempo de ejecuci´on es lineal.
Insertar tras una posici´on p require una llamada a new y
dos maniobras con apuntadores, O(1).
Buscar la posici´on p podr´ıa llevar tiempo lineal.
Un nodo cabecera facilita la inserci´on y la eliminaci´on al comienzo
de la lista.
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Implementaci´on de listas doblemente enlazadas
Cada nodo apunta al siguiente y al anterior.
Duplica el uso de la memoria necesaria para los punteros.
Duplica el coste de manejo de punteros al insertar y eliminar.
La eliminaci´on se simplifica.
No es necesario buscar el elemento anterior.
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Pseudoc´odigo: Implementaci´on con un nodo cabecera (i)
tipo PNodo = puntero a Nodo
Lista = PNodo
Posici´on = PNodo
Nodo = registro
Elemento : Tipo_de_elemento
Siguiente : PNodo
fin registro
procedimiento Crear Lista ( L )
nuevo ( tmp );
si tmp = nil entonces error Memoria agotada
sino
tmpˆ.Elemento := { nodo cabecera };
tmpˆ.Siguiente := nil;
L := tmp
fin procedimiento
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Pseudoc´odigo: Implementaci´on con un nodo cabecera (ii)
funci´on Lista Vac´ıa ( L ) : test
devolver Lˆ.Siguiente = nil
fin funci´on
funci´on Buscar ( x, L ) : posici´on de la 1a ocurrencia
o nil
p := Lˆ.Siguiente;
mientras p <> nil y pˆ.Elemento <> x hacer
p := pˆ.Siguiente;
devolver p
fin funci´on
funci´on ´Ultimo Elemento ( p ) : test { privada }
devolver pˆ.Siguiente = nil
fin funci´on
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Pseudoc´odigo: Implementaci´on con un nodo cabecera (iii)
funci´on Buscar Anterior ( x, L ) : posici´on anterior a x
o a nil { privada }
p := L;
mientras pˆ.Siguiente <> nil y
pˆ.Siguienteˆ.Elemento <> x hacer
p := pˆ.Siguiente;
devolver p
fin funci´on
procedimiento Eliminar ( x, L )
p := Buscar Anterior ( x, L );
si ´Ultimo Elemento ( p ) entonces error No encontrado
sino tmp := pˆ.Siguiente;
pˆ.Siguiente := tmpˆ.Siguiente;
liberar ( tmp )
fin procedimiento
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Pseudoc´odigo: Implementaci´on con un nodo cabecera (iv)
procedimiento Insertar ( x, L, p )
nuevo ( tmp ); { Inserta despu´es de la posici´on p }
si tmp = nil entonces
error Memoria agotada
sino
tmpˆ.Elemento := x;
tmpˆ.Siguiente := pˆ.Siguiente:
pˆ.Siguiente := tmp
fin procedimiento
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
C´odigo C: listas.h
typedef int tipo_elemento;
struct nodo {
tipo_elemento elemento;
struct nodo * siguiente;
};
typedef struct nodo *pnodo;
typedef pnodo lista;
void crear_lista(lista *);
int lista_vacia(lista);
pnodo buscar(tipo_elemento, lista);
int ultimo_elemento(pnodo);
void eliminar(tipo_elemento, lista *);
void insertar(tipo_elemento, lista *, pnodo);
/* ERRORES: eliminar un elemento que no esta en la lista */
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
C´odigo C: listas.c (i)
#include <stdlib.h>
#include <stdio.h>
#include "listas.h"
void crear_lista(lista *l){
pnodo tmp = (pnodo) malloc(sizeof(struct nodo));
if (tmp == NULL) {
printf("memoria agotadan");
exit(EXIT_FAILURE);
}
tmp->siguiente = NULL;
*l = tmp;
}
int lista_vacia(lista l){
return (l->siguiente == NULL);
}
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
C´odigo C: listas.c (ii)
pnodo buscar(tipo_elemento x, lista l){
pnodo p = l->siguiente;
while (p != NULL && p->elemento != x)
p = p->siguiente;
return p;
}
int ultimo_elemento(pnodo p) { /* privada */
return (p->siguiente == NULL);
}
pnodo buscar_anterior(tipo_elemento x, lista l) {/*privada*/
pnodo p = l;
while (p->siguiente != NULL && p->siguiente->elemento !=x)
p = p->siguiente;
return p;
}
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
C´odigo C: listas.c (iii)
void eliminar(tipo_elemento x, lista *l) {
pnodo tmp, p = buscar_anterior(x, *l);
if (ultimo_elemento(p)) {
printf("no encontrado: %dn", x);
exit(EXIT_FAILURE);
}
tmp = p->siguiente;
p->siguiente = tmp->siguiente;
free(tmp);
}
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
C´odigo C: listas.c (iv)
void insertar(tipo_elemento x, lista *l, pnodo p) {
pnodo tmp = (pnodo) malloc(sizeof(struct nodo));
if (tmp == NULL) {
printf("memoria agotadan");
exit(EXIT_FAILURE);
}
tmp->elemento = x;
tmp->siguiente = p->siguiente;
p->siguiente = tmp;
}
Algoritmos Pilas, Colas, Listas
Pilas
Colas
Listas
Algoritmos Pilas, Colas, Listas

Más contenido relacionado

La actualidad más candente

test access 2010
test access 2010test access 2010
test access 2010avargasjair
 
Solucion evaluacion conocimientos previos
Solucion evaluacion conocimientos previosSolucion evaluacion conocimientos previos
Solucion evaluacion conocimientos previosJesus Chaux
 
Capitulo 1 cuestionario de access relaciones entre tablas
Capitulo 1 cuestionario de access relaciones entre tablasCapitulo 1 cuestionario de access relaciones entre tablas
Capitulo 1 cuestionario de access relaciones entre tablasJhois Emoscha
 
Cuestionario 1: Base de datos elementos básicos de Access 2012
Cuestionario 1: Base de datos elementos básicos de Access 2012Cuestionario 1: Base de datos elementos básicos de Access 2012
Cuestionario 1: Base de datos elementos básicos de Access 2012AngieyR07
 
Programa para suma y multiplicacion fer
Programa para suma y multiplicacion ferPrograma para suma y multiplicacion fer
Programa para suma y multiplicacion ferFernando FrXo
 
Sqlconsultasmscomplejas 1212077755475220-8
Sqlconsultasmscomplejas 1212077755475220-8Sqlconsultasmscomplejas 1212077755475220-8
Sqlconsultasmscomplejas 1212077755475220-8KaTta Conde
 
Bases de datos temas examen
Bases de datos temas examenBases de datos temas examen
Bases de datos temas examenVelmuz Buzz
 
Nathaly 2
Nathaly  2Nathaly  2
Sirley y nathaly
Sirley y nathalySirley y nathaly
Sirley y nathaly
sirley villamizar
 
Programa que multiplica y suma
Programa que multiplica y sumaPrograma que multiplica y suma
Programa que multiplica y sumaJimakawary Renaud
 
Mini quiz
Mini quizMini quiz
Mini quiz
Jaime Veas
 
Algoritmos 50 ejemplos (1)
Algoritmos 50 ejemplos (1)Algoritmos 50 ejemplos (1)
Algoritmos 50 ejemplos (1)
Andres Rivero
 
Prueba practica de estadística angel saldivia
Prueba practica de estadística angel saldiviaPrueba practica de estadística angel saldivia
Prueba practica de estadística angel saldivia
UNIVERSIDAD BICENTENARIA DE ARAGUA
 

La actualidad más candente (17)

test access 2010
test access 2010test access 2010
test access 2010
 
Solucion evaluacion conocimientos previos
Solucion evaluacion conocimientos previosSolucion evaluacion conocimientos previos
Solucion evaluacion conocimientos previos
 
Cuestionario 1
Cuestionario 1Cuestionario 1
Cuestionario 1
 
Capitulo 1 cuestionario de access relaciones entre tablas
Capitulo 1 cuestionario de access relaciones entre tablasCapitulo 1 cuestionario de access relaciones entre tablas
Capitulo 1 cuestionario de access relaciones entre tablas
 
Evaluación excel
Evaluación excelEvaluación excel
Evaluación excel
 
Cuestionario 1: Base de datos elementos básicos de Access 2012
Cuestionario 1: Base de datos elementos básicos de Access 2012Cuestionario 1: Base de datos elementos básicos de Access 2012
Cuestionario 1: Base de datos elementos básicos de Access 2012
 
Programa para suma y multiplicacion fer
Programa para suma y multiplicacion ferPrograma para suma y multiplicacion fer
Programa para suma y multiplicacion fer
 
Sqlconsultasmscomplejas 1212077755475220-8
Sqlconsultasmscomplejas 1212077755475220-8Sqlconsultasmscomplejas 1212077755475220-8
Sqlconsultasmscomplejas 1212077755475220-8
 
Graficando funciones cuadraticas en geogebra
Graficando funciones cuadraticas en geogebraGraficando funciones cuadraticas en geogebra
Graficando funciones cuadraticas en geogebra
 
Bases de datos temas examen
Bases de datos temas examenBases de datos temas examen
Bases de datos temas examen
 
Nathaly 2
Nathaly  2Nathaly  2
Nathaly 2
 
Sirley y nathaly
Sirley y nathalySirley y nathaly
Sirley y nathaly
 
Programa que multiplica y suma
Programa que multiplica y sumaPrograma que multiplica y suma
Programa que multiplica y suma
 
Jimakawarygrosso
JimakawarygrossoJimakawarygrosso
Jimakawarygrosso
 
Mini quiz
Mini quizMini quiz
Mini quiz
 
Algoritmos 50 ejemplos (1)
Algoritmos 50 ejemplos (1)Algoritmos 50 ejemplos (1)
Algoritmos 50 ejemplos (1)
 
Prueba practica de estadística angel saldivia
Prueba practica de estadística angel saldiviaPrueba practica de estadística angel saldivia
Prueba practica de estadística angel saldivia
 

Destacado

Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
Juan Astudillo
 
Estructura de datos, pilas, árboles, colas, listas
Estructura de datos, pilas, árboles, colas, listasEstructura de datos, pilas, árboles, colas, listas
Estructura de datos, pilas, árboles, colas, listas
Guiro Lin
 
Arboles
ArbolesArboles
ESTRUCTURAS DE DATOS FUNDAMENTALES
ESTRUCTURAS DE DATOS FUNDAMENTALESESTRUCTURAS DE DATOS FUNDAMENTALES
ESTRUCTURAS DE DATOS FUNDAMENTALES
Evans Balcazar
 
Tipos De Datos Abstractos
Tipos De Datos AbstractosTipos De Datos Abstractos
PresentacióN1 Marina Leticia
PresentacióN1 Marina LeticiaPresentacióN1 Marina Leticia
PresentacióN1 Marina Leticia
Vanessac
 
Listas pilas colas
Listas pilas colasListas pilas colas
Listas pilas colas
xpiner
 
Estructura dedatos
Estructura dedatosEstructura dedatos
Estructura dedatosJorge
 
Mapa conceptual
Mapa conceptualMapa conceptual
Mapa conceptualereinoso43
 
Exposicion grupo nro 1 de la militaridad
Exposicion grupo nro 1 de la militaridadExposicion grupo nro 1 de la militaridad
Exposicion grupo nro 1 de la militaridad
armando1957
 
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
LupitaOMG Garmendia
 
proyecto de estructura de datos
proyecto de estructura de datosproyecto de estructura de datos
proyecto de estructura de datos
chucho_jesus
 
Algoritmos y Estructuras de Datos
Algoritmos y Estructuras de DatosAlgoritmos y Estructuras de Datos
Algoritmos y Estructuras de Datos
Storti Mario
 
Aplicaciones a aspectos pragmáticos2011
Aplicaciones a aspectos pragmáticos2011Aplicaciones a aspectos pragmáticos2011
Aplicaciones a aspectos pragmáticos2011cucuki88
 
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10chrisflores001
 
18 Arboles Como Estructura De Busqueda
18 Arboles Como Estructura De Busqueda18 Arboles Como Estructura De Busqueda
18 Arboles Como Estructura De BusquedaUVM
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
Luis Igoodbad
 

Destacado (20)

Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Estructura de datos, pilas, árboles, colas, listas
Estructura de datos, pilas, árboles, colas, listasEstructura de datos, pilas, árboles, colas, listas
Estructura de datos, pilas, árboles, colas, listas
 
Arboles
ArbolesArboles
Arboles
 
ESTRUCTURAS DE DATOS FUNDAMENTALES
ESTRUCTURAS DE DATOS FUNDAMENTALESESTRUCTURAS DE DATOS FUNDAMENTALES
ESTRUCTURAS DE DATOS FUNDAMENTALES
 
colas de prioridad
colas de prioridad colas de prioridad
colas de prioridad
 
Tipos De Datos Abstractos
Tipos De Datos AbstractosTipos De Datos Abstractos
Tipos De Datos Abstractos
 
PresentacióN1 Marina Leticia
PresentacióN1 Marina LeticiaPresentacióN1 Marina Leticia
PresentacióN1 Marina Leticia
 
Listas pilas colas
Listas pilas colasListas pilas colas
Listas pilas colas
 
Yulexi
YulexiYulexi
Yulexi
 
Estructura dedatos
Estructura dedatosEstructura dedatos
Estructura dedatos
 
Mapa conceptual
Mapa conceptualMapa conceptual
Mapa conceptual
 
Exposicion grupo nro 1 de la militaridad
Exposicion grupo nro 1 de la militaridadExposicion grupo nro 1 de la militaridad
Exposicion grupo nro 1 de la militaridad
 
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
 
proyecto de estructura de datos
proyecto de estructura de datosproyecto de estructura de datos
proyecto de estructura de datos
 
Algoritmos y Estructuras de Datos
Algoritmos y Estructuras de DatosAlgoritmos y Estructuras de Datos
Algoritmos y Estructuras de Datos
 
Aplicaciones a aspectos pragmáticos2011
Aplicaciones a aspectos pragmáticos2011Aplicaciones a aspectos pragmáticos2011
Aplicaciones a aspectos pragmáticos2011
 
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
 
18 Arboles Como Estructura De Busqueda
18 Arboles Como Estructura De Busqueda18 Arboles Como Estructura De Busqueda
18 Arboles Como Estructura De Busqueda
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 

Similar a Pilas colas listas

Tema 2.1 -_pilas,_colas_y_listas
Tema 2.1 -_pilas,_colas_y_listasTema 2.1 -_pilas,_colas_y_listas
Tema 2.1 -_pilas,_colas_y_listas
R Nuñez
 
Pilas colas
Pilas colasPilas colas
Pilas colas
Robinson Ch
 
Clase 9- programacion
Clase 9- programacionClase 9- programacion
Clase 9- programaciondiego MC
 
ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++die_dex
 
Arreglos y matrices
Arreglos y matricesArreglos y matrices
Arreglos y matrices
C.T.P DE PITAL
 
Tema 4 - Tipos datos avanzados (I)
Tema 4 - Tipos datos avanzados (I)Tema 4 - Tipos datos avanzados (I)
Tema 4 - Tipos datos avanzados (I)
Pablo Haya
 
arreglos y matrices
arreglos  y matricesarreglos  y matrices
arreglos y matrices
Kathery Correa Quiroz
 
I1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntosI1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntos
José A. Alonso
 
Biblioteca java.util por gio
Biblioteca java.util por gioBiblioteca java.util por gio
Biblioteca java.util por gioRobert Wolf
 
Arreglos
ArreglosArreglos
Pres arreglosmat animacion
Pres arreglosmat animacionPres arreglosmat animacion
Pres arreglosmat animacionJLAntonio
 
Tema 5 - Estructuras de datos.pdf
Tema 5 - Estructuras de datos.pdfTema 5 - Estructuras de datos.pdf
Tema 5 - Estructuras de datos.pdf
GabrieleGalieroCasay1
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)Videoconferencias UTPL
 
06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C
Diego Andrés Alvarez Marín
 
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Aragón Open Data
 
Curso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacionCurso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacion
LUISFERNANDOMORENOSO2
 
08 strings o cadenas
08 strings o cadenas08 strings o cadenas
08 strings o cadenas
horusblom
 

Similar a Pilas colas listas (20)

Tema 2.1 -_pilas,_colas_y_listas
Tema 2.1 -_pilas,_colas_y_listasTema 2.1 -_pilas,_colas_y_listas
Tema 2.1 -_pilas,_colas_y_listas
 
Pilas colas
Pilas colasPilas colas
Pilas colas
 
Clase 9- programacion
Clase 9- programacionClase 9- programacion
Clase 9- programacion
 
ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++ARRAYS (LISTAS Y TABLAS) EN C++
ARRAYS (LISTAS Y TABLAS) EN C++
 
Luis Gamboa
Luis  GamboaLuis  Gamboa
Luis Gamboa
 
Práctica 12
Práctica 12Práctica 12
Práctica 12
 
Arreglos y matrices
Arreglos y matricesArreglos y matrices
Arreglos y matrices
 
Tema 4 - Tipos datos avanzados (I)
Tema 4 - Tipos datos avanzados (I)Tema 4 - Tipos datos avanzados (I)
Tema 4 - Tipos datos avanzados (I)
 
arreglos y matrices
arreglos  y matricesarreglos  y matrices
arreglos y matrices
 
I1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntosI1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntos
 
Biblioteca java.util por gio
Biblioteca java.util por gioBiblioteca java.util por gio
Biblioteca java.util por gio
 
Arreglos
ArreglosArreglos
Arreglos
 
Pres arreglosmat animacion
Pres arreglosmat animacionPres arreglosmat animacion
Pres arreglosmat animacion
 
Tema 5 - Estructuras de datos.pdf
Tema 5 - Estructuras de datos.pdfTema 5 - Estructuras de datos.pdf
Tema 5 - Estructuras de datos.pdf
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 
7.arreglos en java
7.arreglos en  java7.arreglos en  java
7.arreglos en java
 
06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C
 
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
 
Curso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacionCurso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacion
 
08 strings o cadenas
08 strings o cadenas08 strings o cadenas
08 strings o cadenas
 

Último

Testimonio Paco Z PATRONATO_Valencia_24.pdf
Testimonio Paco Z PATRONATO_Valencia_24.pdfTestimonio Paco Z PATRONATO_Valencia_24.pdf
Testimonio Paco Z PATRONATO_Valencia_24.pdf
Txema Gs
 
True Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdfTrue Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdf
Mercedes Gonzalez
 
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia leeevalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
MaribelGaitanRamosRa
 
Junio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividadesJunio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividades
cintiat3400
 
Texto_de_Aprendizaje-1ro_secundaria-2024.pdf
Texto_de_Aprendizaje-1ro_secundaria-2024.pdfTexto_de_Aprendizaje-1ro_secundaria-2024.pdf
Texto_de_Aprendizaje-1ro_secundaria-2024.pdf
ClaudiaAlcondeViadez
 
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptxCLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
LilianaRivera778668
 
Educar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdfEducar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdf
Demetrio Ccesa Rayme
 
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptxSemana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
LorenaCovarrubias12
 
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
pablomarin116
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
20minutos
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
20minutos
 
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdfT3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
eliecerespinosa
 
Libro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdfLibro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdf
danitarb
 
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfUn libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
sandradianelly
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
YasneidyGonzalez
 
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
JAVIER SOLIS NOYOLA
 
PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.
https://gramadal.wordpress.com/
 
Presentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos DigitalesPresentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos Digitales
nievesjiesc03
 
El fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amorEl fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amor
Alejandrino Halire Ccahuana
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
Edurne Navarro Bueno
 

Último (20)

Testimonio Paco Z PATRONATO_Valencia_24.pdf
Testimonio Paco Z PATRONATO_Valencia_24.pdfTestimonio Paco Z PATRONATO_Valencia_24.pdf
Testimonio Paco Z PATRONATO_Valencia_24.pdf
 
True Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdfTrue Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdf
 
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia leeevalaución de reforzamiento de cuarto de secundaria de la competencia lee
evalaución de reforzamiento de cuarto de secundaria de la competencia lee
 
Junio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividadesJunio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividades
 
Texto_de_Aprendizaje-1ro_secundaria-2024.pdf
Texto_de_Aprendizaje-1ro_secundaria-2024.pdfTexto_de_Aprendizaje-1ro_secundaria-2024.pdf
Texto_de_Aprendizaje-1ro_secundaria-2024.pdf
 
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptxCLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
CLASE N.1 ANÁLISIS ADMINISTRATIVO EMPRESARIAL presentación.pptx
 
Educar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdfEducar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdf
 
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptxSemana 10-TSM-del 27 al 31 de mayo 2024.pptx
Semana 10-TSM-del 27 al 31 de mayo 2024.pptx
 
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.Friedrich Nietzsche. Presentación de 2 de Bachillerato.
Friedrich Nietzsche. Presentación de 2 de Bachillerato.
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
 
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdfT3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
T3-Instrumento de evaluacion_Planificación Analìtica_Actividad con IA.pdf
 
Libro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdfLibro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdf
 
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfUn libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
 
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
 
PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.PPT: El fundamento del gobierno de Dios.
PPT: El fundamento del gobierno de Dios.
 
Presentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos DigitalesPresentación Revistas y Periódicos Digitales
Presentación Revistas y Periódicos Digitales
 
El fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amorEl fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amor
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
 

Pilas colas listas

  • 1. Pilas Colas Listas Estructuras de datos: Pilas, Colas, Listas Algoritmos Dep. de Computaci´on - Fac. de Inform´atica Universidad de A Coru˜na J. Santiago Jorge sjorge@udc.es Algoritmos Pilas, Colas, Listas
  • 2. Pilas Colas Listas ´Indice 1 Pilas 2 Colas 3 Listas Algoritmos Pilas, Colas, Listas
  • 3. Pilas Colas Listas Referencias bibliogr´aficas M. A. Weiss. Listas, pilas y colas. En Estructuras de datos y algoritmos, cap´ıtulo 3, p´aginas 45–92. Addison-Wesley Iberoamericana, 1995. R. Pe˜na Mar´ı. Implementaci´on de estructuras de datos. En Dise˜no de Programas. Formalismo y abstracci´on, cap´ıtulo 7, p´aginas 257–290. Prentice Hall, segunda edici´on, 1998. G. Brassard y T. Bratley. Estructura de datos. En Fundamentos de algoritmia, cap´ıtulo 5, p´aginas 167–210. Prentice Hall, 1997. Algoritmos Pilas, Colas, Listas
  • 4. Pilas Colas Listas ´Indice 1 Pilas 2 Colas 3 Listas Algoritmos Pilas, Colas, Listas
  • 5. Pilas Colas Listas Pilas Acceso limitado al ´ultimo elemento insertado Operaciones b´asicas: apilar, desapilar y cima. desapilar o cima en una pila vac´ıa es un error en el TDA pila. Quedarse sin espacio al apilar es un error de implementaci´on. Cada operaci´on deber´ıa tardar una cantidad constante de tiempo en ejecutarse. Con independencia del n´umero de elementos apiladas. Algoritmos Pilas, Colas, Listas
  • 6. Pilas Colas Listas Pseudoc´odigo: Implementaci´on a base de vectores (i) tipo Pila = registro Cima_de_pila : 0..Tama˜no_m´aximo_de_pila Vector_de_pila : vector [1..Tama˜no_m´aximo_de_pila] de Tipo_de_elemento fin registro procedimiento Crear Pila ( P ) P.Cima_de_pila := 0 fin procedimiento funci´on Pila Vac´ıa ( P ) : test devolver P.Cima_de_pila = 0 fin funci´on Algoritmos Pilas, Colas, Listas
  • 7. Pilas Colas Listas Pseudoc´odigo: Implementaci´on a base de vectores (ii) procedimiento Apilar ( x, P ) si P.Cima_de_pila = Tama˜no_m´aximo_de_pila entonces error Pila llena sino P.Cima_de_pila := P.Cima_de_pila + 1; P.Vector_de_pila[P.Cima_de_pila] := x fin procedimiento funci´on Cima ( P ) : Tipo_de_elemento si Pila Vac´ıa (P) entonces error Pila vac´ıa sino devolver P.Vector_de_pila[P.Cima de Pila] fin funci´on procedimiento Desapilar ( P ) si Pila Vac´ıa (P) entonces error Pila vac´ıa sino P.Cima_de_pila := P.Cima_de_pila - 1 fin procedimiento Algoritmos Pilas, Colas, Listas
  • 8. Pilas Colas Listas C´odigo C: pilas.h #ifndef TAMANO_MAXIMO_PILA #define TAMANO_MAXIMO_PILA 10 #endif typedef int tipo_elemento; typedef struct { int cima; tipo_elemento vector[TAMANO_MAXIMO_PILA]; } pila; void crear_pila(pila *); int pila_vacia(pila); void apilar(tipo_elemento, pila *); tipo_elemento cima(pila); void desapilar(pila *); /* ERRORES: cima o desapilar sobre la pila vac´ıa apilar sobre la pila llena */ Algoritmos Pilas, Colas, Listas
  • 9. Pilas Colas Listas C´odigo C: pilas.c (i) #include <stdlib.h> #include <stdio.h> #include "pilas.h" void crear_pila(pila *p) { p->cima = -1; } int pila_vacia(pila p) { return (p.cima == -1); } void apilar(tipo_elemento x, pila *p) { if (++p->cima == TAMANO_MAXIMO_PILA) { printf("error: pila llenan"); exit(EXIT_FAILURE); } p->vector[p->cima] = x; } Algoritmos Pilas, Colas, Listas
  • 10. Pilas Colas Listas C´odigo C: pilas.c (ii) tipo_elemento cima(pila p) { if (pila_vacia(p)) { printf("error: pila vacian"); exit(EXIT_FAILURE); } return p.vector[p.cima]; } void desapilar(pila *p) { if (pila_vacia(*p)) { printf("error: pila vacian"); exit(EXIT_FAILURE); } p->cima--; } Algoritmos Pilas, Colas, Listas
  • 11. Pilas Colas Listas ´Indice 1 Pilas 2 Colas 3 Listas Algoritmos Pilas, Colas, Listas
  • 12. Pilas Colas Listas Colas Operaciones b´asicas: insertar, quitarPrimero y primero. Cada rutina deber´ıa ejecutarse en tiempo constante. Algoritmos Pilas, Colas, Listas
  • 13. Pilas Colas Listas Implementaci´on circular a base de vectores (i) La implementaci´on circular devuelve cabeza y fin al principo del vector cuando rebasan la ´ultima posici´on. final 1) Crear Cola (C) cabeza Algoritmos Pilas, Colas, Listas
  • 14. Pilas Colas Listas Implementaci´on circular a base de vectores (i) La implementaci´on circular devuelve cabeza y fin al principo del vector cuando rebasan la ´ultima posici´on. final 1) Crear Cola (C) cabeza final 2) Insertar en Cola (a,C) a cabeza Algoritmos Pilas, Colas, Listas
  • 15. Pilas Colas Listas Implementaci´on circular a base de vectores (i) La implementaci´on circular devuelve cabeza y fin al principo del vector cuando rebasan la ´ultima posici´on. final 1) Crear Cola (C) cabeza final 2) Insertar en Cola (a,C) a cabeza final 3) Insertar en Cola (b,C) a b cabeza Algoritmos Pilas, Colas, Listas
  • 16. Pilas Colas Listas Implementaci´on circular a base de vectores (i) final 4) Insertar en Cola (c,C) a b c cabeza Algoritmos Pilas, Colas, Listas
  • 17. Pilas Colas Listas Implementaci´on circular a base de vectores (i) final 4) Insertar en Cola (c,C) a b c cabeza final 5) Insertar en Cola (d,C) a b c d cabeza Algoritmos Pilas, Colas, Listas
  • 18. Pilas Colas Listas Implementaci´on circular a base de vectores (i) final 4) Insertar en Cola (c,C) a b c cabeza final 5) Insertar en Cola (d,C) a b c d cabeza final 6) Quitar Primero (C) b c d cabeza Algoritmos Pilas, Colas, Listas
  • 19. Pilas Colas Listas Implementaci´on circular a base de vectores (i) final 4) Insertar en Cola (c,C) a b c cabeza final 5) Insertar en Cola (d,C) a b c d cabeza final 6) Quitar Primero (C) b c d cabeza final 7) Insertar en Cola (e,C) e b c d cabeza Algoritmos Pilas, Colas, Listas
  • 20. Pilas Colas Listas Pseudoc´odigo (i) tipo Cola = registro Cabeza_de_cola, Final_de_cola: 1..Tama˜no_m´aximo_de_cola Tama˜no_de_cola : 0..Tama˜no_m´aximo_de_cola Vector_de_cola : vector [1..Tama˜no_m´aximo_de_cola] de Tipo_de_elemento fin registro procedimiento Crear_Cola ( C ) C.Tama˜no_de_cola := 0; C.Cabeza_de_cola := 1; C.Final_de_cola := Tama˜no_m´aximo_de_cola fin procedimiento funci´on Cola_Vac´ıa ( C ) : test devolver C.Tama˜no_de_cola = 0 fin funci´on Algoritmos Pilas, Colas, Listas
  • 21. Pilas Colas Listas Pseudoc´odigo (ii) procedimiento incrementar ( x ) (* privado *) si x = Tama˜no_m´aximo_de_cola entonces x := 1 sino x := x + 1 fin procedimiento procedimiento Insertar_en_Cola ( x, C ) si C.Tama˜no_de_Cola = Tama˜no_m´aximo_de_cola entonces error Cola llena sino C.Tama˜no_de_cola := C.Tama˜no_de_cola + 1; incrementar(C.Final_de_cola); C.Vector_de_cola[C.Final_de_cola] := x; fin procedimiento Algoritmos Pilas, Colas, Listas
  • 22. Pilas Colas Listas Pseudoc´odigo (iii) funci´on Quitar_Primero ( C ) : Tipo_de_elemento si Cola_Vac´ıa ( C ) entonces error Cola vac´ıa sino C.Tama˜no_de_cola := C.Tama˜no_de_cola - 1; x := C.Vector_de_cola[C.Cabeza_de_cola]; incrementar(C.Cabeza_de_cola); devolver x fin funci´on funci´on Primero ( C ) : Tipo_de_elemento si Cola_Vac´ıa ( C ) entonces error Cola vac´ıa sino devolver C.Vector_de_cola[C.Cabeza_de_cola] fin funci´on Algoritmos Pilas, Colas, Listas
  • 23. Pilas Colas Listas C´odigo C: colas.h #ifndef TAMANO_MAXIMO_COLA #define TAMANO_MAXIMO_COLA 5 #endif typedef int tipo_elemento; typedef struct { int cabeza, final, tamano; tipo_elemento vector[TAMANO_MAXIMO_COLA]; } cola; void crear_cola(cola *); int cola_vacia(cola); void insertar(tipo_elemento, cola *); tipo_elemento quitar_primero(cola *); tipo_elemento primero(cola); /* ERRORES: quitar_primero o primero sobre una cola vac´ıa insertar en una cola llena */ Algoritmos Pilas, Colas, Listas
  • 24. Pilas Colas Listas C´odigo C: colas.c (i) #include <stdlib.h> #include <stdio.h> #include "colas.h" void crear_cola(cola *c) { c->tamano = 0; c->cabeza = 0; c->final = -1; } int cola_vacia(cola c) { return (c.tamano == 0); } void incrementar(int *x) { /* privado */ if (++(*x) == TAMANO_MAXIMO_COLA) *x = 0; } Algoritmos Pilas, Colas, Listas
  • 25. Pilas Colas Listas C´odigo C: colas.c (ii) void insertar(tipo_elemento x, cola *c) { if (c->tamano == TAMANO_MAXIMO_COLA) { printf("error: cola llena: %dn", c->tamano); exit(EXIT_FAILURE); } c->tamano++; incrementar(&(c->final)); c->vector[c->final] = x; } tipo_elemento primero(cola c) { if (cola_vacia(c)) { printf("error: cola vacian"); exit(EXIT_FAILURE); } return(c.vector[c.cabeza]); } Algoritmos Pilas, Colas, Listas
  • 26. Pilas Colas Listas C´odigo C: colas.c (iii) tipo_elemento quitar_primero(cola *c) { tipo_elemento x; if (cola_vacia(*c)) { printf("error: cola vacian"); exit(EXIT_FAILURE); } c->tamano--; x = c->vector[c->cabeza]; incrementar(&(c->cabeza)); return x; } Algoritmos Pilas, Colas, Listas
  • 27. Pilas Colas Listas ´Indice 1 Pilas 2 Colas 3 Listas Algoritmos Pilas, Colas, Listas
  • 28. Pilas Colas Listas Listas Operaciones b´asicas: Visualizar su contenido. Buscar la posici´on de la primera ocurrencia de un elemento. Insertar y Eliminar un elemento en alguna posici´on. Buscar k esimo, que devuelve el elemento de la posici´on indicada Algoritmos Pilas, Colas, Listas
  • 29. Pilas Colas Listas Implementaci´on de listas a base de vectores Tiene que declararse el tama˜no de la lista. Exige sobrevaloraci´on. Consume mucho espacio. Complejidad computacional de las operaciones: Buscar k esimo, tiempo constante Visualizar y Buscar, tiempo lineal. Insertar y Eliminar son costosas. Insertar o eliminar un elemento exige, en promedio, desplazar la mitad de los valores, O(n). La construcci´on de una lista o la eliminaci´on de todos sus elementos podr´ıa exigir un tiempo cuadr´atico. Algoritmos Pilas, Colas, Listas
  • 30. Pilas Colas Listas Implementaci´on de listas a base de apuntadores Cada nodo apunta al siguiente; el ´ultimo no apunta a nada. La lista es un puntero al primer nodo (y al ´ultimo). Complejidad computacional de las operaciones: Visualizar y Buscar, tiempo lineal. Buscar k esimo, tiempo lineal. Eliminar realiza un cambio de apuntadores y una orden dispose, O(1). Usa Buscar anterior cuyo tiempo de ejecuci´on es lineal. Insertar tras una posici´on p require una llamada a new y dos maniobras con apuntadores, O(1). Buscar la posici´on p podr´ıa llevar tiempo lineal. Un nodo cabecera facilita la inserci´on y la eliminaci´on al comienzo de la lista. Algoritmos Pilas, Colas, Listas
  • 31. Pilas Colas Listas Implementaci´on de listas doblemente enlazadas Cada nodo apunta al siguiente y al anterior. Duplica el uso de la memoria necesaria para los punteros. Duplica el coste de manejo de punteros al insertar y eliminar. La eliminaci´on se simplifica. No es necesario buscar el elemento anterior. Algoritmos Pilas, Colas, Listas
  • 32. Pilas Colas Listas Pseudoc´odigo: Implementaci´on con un nodo cabecera (i) tipo PNodo = puntero a Nodo Lista = PNodo Posici´on = PNodo Nodo = registro Elemento : Tipo_de_elemento Siguiente : PNodo fin registro procedimiento Crear Lista ( L ) nuevo ( tmp ); si tmp = nil entonces error Memoria agotada sino tmpˆ.Elemento := { nodo cabecera }; tmpˆ.Siguiente := nil; L := tmp fin procedimiento Algoritmos Pilas, Colas, Listas
  • 33. Pilas Colas Listas Pseudoc´odigo: Implementaci´on con un nodo cabecera (ii) funci´on Lista Vac´ıa ( L ) : test devolver Lˆ.Siguiente = nil fin funci´on funci´on Buscar ( x, L ) : posici´on de la 1a ocurrencia o nil p := Lˆ.Siguiente; mientras p <> nil y pˆ.Elemento <> x hacer p := pˆ.Siguiente; devolver p fin funci´on funci´on ´Ultimo Elemento ( p ) : test { privada } devolver pˆ.Siguiente = nil fin funci´on Algoritmos Pilas, Colas, Listas
  • 34. Pilas Colas Listas Pseudoc´odigo: Implementaci´on con un nodo cabecera (iii) funci´on Buscar Anterior ( x, L ) : posici´on anterior a x o a nil { privada } p := L; mientras pˆ.Siguiente <> nil y pˆ.Siguienteˆ.Elemento <> x hacer p := pˆ.Siguiente; devolver p fin funci´on procedimiento Eliminar ( x, L ) p := Buscar Anterior ( x, L ); si ´Ultimo Elemento ( p ) entonces error No encontrado sino tmp := pˆ.Siguiente; pˆ.Siguiente := tmpˆ.Siguiente; liberar ( tmp ) fin procedimiento Algoritmos Pilas, Colas, Listas
  • 35. Pilas Colas Listas Pseudoc´odigo: Implementaci´on con un nodo cabecera (iv) procedimiento Insertar ( x, L, p ) nuevo ( tmp ); { Inserta despu´es de la posici´on p } si tmp = nil entonces error Memoria agotada sino tmpˆ.Elemento := x; tmpˆ.Siguiente := pˆ.Siguiente: pˆ.Siguiente := tmp fin procedimiento Algoritmos Pilas, Colas, Listas
  • 36. Pilas Colas Listas C´odigo C: listas.h typedef int tipo_elemento; struct nodo { tipo_elemento elemento; struct nodo * siguiente; }; typedef struct nodo *pnodo; typedef pnodo lista; void crear_lista(lista *); int lista_vacia(lista); pnodo buscar(tipo_elemento, lista); int ultimo_elemento(pnodo); void eliminar(tipo_elemento, lista *); void insertar(tipo_elemento, lista *, pnodo); /* ERRORES: eliminar un elemento que no esta en la lista */ Algoritmos Pilas, Colas, Listas
  • 37. Pilas Colas Listas C´odigo C: listas.c (i) #include <stdlib.h> #include <stdio.h> #include "listas.h" void crear_lista(lista *l){ pnodo tmp = (pnodo) malloc(sizeof(struct nodo)); if (tmp == NULL) { printf("memoria agotadan"); exit(EXIT_FAILURE); } tmp->siguiente = NULL; *l = tmp; } int lista_vacia(lista l){ return (l->siguiente == NULL); } Algoritmos Pilas, Colas, Listas
  • 38. Pilas Colas Listas C´odigo C: listas.c (ii) pnodo buscar(tipo_elemento x, lista l){ pnodo p = l->siguiente; while (p != NULL && p->elemento != x) p = p->siguiente; return p; } int ultimo_elemento(pnodo p) { /* privada */ return (p->siguiente == NULL); } pnodo buscar_anterior(tipo_elemento x, lista l) {/*privada*/ pnodo p = l; while (p->siguiente != NULL && p->siguiente->elemento !=x) p = p->siguiente; return p; } Algoritmos Pilas, Colas, Listas
  • 39. Pilas Colas Listas C´odigo C: listas.c (iii) void eliminar(tipo_elemento x, lista *l) { pnodo tmp, p = buscar_anterior(x, *l); if (ultimo_elemento(p)) { printf("no encontrado: %dn", x); exit(EXIT_FAILURE); } tmp = p->siguiente; p->siguiente = tmp->siguiente; free(tmp); } Algoritmos Pilas, Colas, Listas
  • 40. Pilas Colas Listas C´odigo C: listas.c (iv) void insertar(tipo_elemento x, lista *l, pnodo p) { pnodo tmp = (pnodo) malloc(sizeof(struct nodo)); if (tmp == NULL) { printf("memoria agotadan"); exit(EXIT_FAILURE); } tmp->elemento = x; tmp->siguiente = p->siguiente; p->siguiente = tmp; } Algoritmos Pilas, Colas, Listas