Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructura Multiples Colas
Estructura Multiples Colas
PILA DE COLAS
ColaS PilaCS
max max
Y v[max+1] ColaS v[max+1]
ini,fin tope
X Y S ColaS() PilaCS()
esvacia() esvacia()
S T esllena() esllena()
nroelem() nroelem()
A G C adicionar(elem) adicionar(elem)
eliminar() eliminar()
llenar(n) llenar(n)
mostrar() mostrar()
vaciar(Z) vaciar(Z)
ColaC PilaCC
max max
v[max+1] ColaC v[max+1]
ini,fin tope
ColaC() PilaCC()
esvacia() esvacia()
esllena() esllena()
nroelem() nroelem()
adicionar(elem) adicionar(elem)
eliminar() eliminar()
llenar(n) llenar(n)
mostrar() mostrar()
vaciar(Z) vaciar(Z)
COLA DE COLAS
ColaS ColaCS
… max max
v[max+1] ColaS v[max+1]
ini,fin ini,fin
ColaS() ColaCS()
esvacia() esvacia()
esllena() esllena()
nroelem() nroelem()
adicionar(elem) adicionar(elem)
eliminar() eliminar()
llenar(n) llenar(n)
mostrar() mostrar()
vaciar(Z) vaciar(Z)
ColaC ColaCC
max max
v[max+1] ColaC v[max+1]
ini,fin ini,fin
ColaC() ColaCC()
esvacia() esvacia()
esllena() esllena()
nroelem() nroelem()
adicionar(elem) adicionar(elem)
eliminar() eliminar()
llenar(n) llenar(n)
mostrar() mostrar()
vaciar(Z) vaciar(Z)
ColaS ColaCC
max max
v[max+1] ColaS v[max+1]
ini,fin ini,fin
ColaS() ColaCC()
esvacia() esvacia()
esllena() esllena()
nroelem() nroelem()
adicionar(elem) adicionar(elem)
eliminar() eliminar()
llenar(n) llenar(n)
mostrar() mostrar()
vaciar(Z) vaciar(Z)
ColaC ColaCC
max max
v[max+1] ColaC v[max+1]
ini,fin ini,fin
ColaC() ColaCC()
esvacia() esvacia()
esllena() esllena()
nroelem() nroelem()
adicionar(elem) adicionar(elem)
eliminar() eliminar()
llenar(n) llenar(n)
mostrar() mostrar()
vaciar(Z) vaciar(Z)
PROBLEMAS Modularizando
Contar(ColaSCv a, String x)
Cuantos Vehículos del Color X existe en el {
conjunto de Colas b=new ColaSCV()
Contar(ColaSCV a, String x) c=0
{ b=new ColaSCV() while not a.esvacia()
aux=new ColaSV() {
c=0 ColaSV cx=a.eliminar()
while not a.esvacia() c=c+busca(cx,x)
{ ColaSV cx=a.eliminar() b.adicionar(cx)
While not cx.esvacia() }
{ Vehiculo vx=cx.eliminar() Print(c)
If vx.getColor()=x a.vaciar(b)
c=c+1 }
aux.adicionar(vx) busca(ColaSV cx, String x)
} {
cx.vaciar(aux) Aux=new ColaSV()
b.adicionar(cx) k=0
} while not cx.esvacia()
a.vaciar(b) { Vehiculo vx=cx.eliminar()
print(c) If vx.getColor()=x
} k=k+1
aux.adicionar(vx)
}
cx.vaciar(aux)
return k
}
Llevar a una nueva cola los vehículos de la marca marcaX(ColaCSV a, String x)
X { aux=new ColaCSV()
marcaX(ColaCSV a, String x) nueva, aux2=new ColaSV()
{ aux=new ColaCSV() while not a.esvacia()
nueva, aux2=new ColaSV() { ColaSV cx=a.eliminar()
while not a.esvacia() ColaSV nueX=buscaX(cx,x)
{ ColaSV cx=a.eliminar() nueva.vaciar(nueX)
While not cx.esvacia() aux.adicionar(cx)
{ Vehiculo vx=cx.eliminar() }
If vx.getMarca()=x a.vaciar(aux)
nueva.adicionar(vx) a.adicionar(nueva)
Else }
aux2.adicionar(vx) buscas(ColaSV a, String x)
} { aux,nue=new ColaSV()
cx.vaciar(aux2) While not a.esvacia()
aux.adicionar(cx) { Vehiculo vx=a.eliminar()
} If vx.getMarca()=x
a.vaciar(aux) nue.adicionar(vx)
a.adicionar(nueva) Else
} aux.adicionar(vx)
}
cx.vaciar(aux)
return nue
}
Departamentos y Provincias
Departamento CSimpleD
IdDpto max
nombre v[max+1]
capital ini, fin
superficie
población
CCircularP prov
getters CSimpleD()
setters esvacia()
leer() esllena()
mostrar() nroelem()
adicionar(elem)
eliminar()
llenar(n)
mostrar()
vaciar(Z)
Provincia CCircularP
idProv max
nombre v[max+1]
capital ini, fin
superficie
población
.. …
CCircularP w=d.getProv()
If i<=w.nroelem()
{
For j=1 to i-1
bb.adicionar(w.eliminar())
Provincia x=w.eliminar()
bb.vaciar(w)
w.adicionar(x)
w.vaciar(bb)
d.setProv(w)
}
aa.adcionar(d)
}
A.vaciar(aa)
}
Ordenar las provincias por superficie del departamento X
Solucion6(CSimpleD A, String x)
{
aux=new CSimpleD()
while not A.esvacia()
{
Departamento d=A.eliminar()
If d.getNombre()=x
{
CCircularP p=d.getProv()
Ordena(p)
d.setProv(p)
}
aux.adicionar(d)
}
A.vaciar(aux)
}
Ordena(CCircularP p)//ascendente
{ aux,R=new CCircularP()
While not p.esvacia(){
men=p.eliminar()
while not p.esvacia()
{ x=p.eliminar()
if x.getSuperficie()<men.getSuperficie()
{ aux.adicionar(men)
men=x
}
Else
aux.adicionar(x)
}
R.adicionar(men)
p.vaciar(aux) }
p.vaciar(R)
}
Cola Simple de Colas Circulares
Sea un diccionario que almacena palabras y de cada palabra almacena sus significados
ColaCCV
max
ColaSV v[max+1]
ini,fin
MULTIPLE COLA
1 2 3 4 …. N-1 N
1 2 3 4 …. N-1 N
}
Print(c)
}
EJERCICIOS:
1. llevar a una nueva cola los vehículos de la marca X
2. Reorganizar las colas, tal que en cada cola estén vehículos de mismo color
3. Eliminar la i-esima cola, distribuyendo sus elementos en el resto de las colas
1 2 3 4 5 …
Cola 1 Cola 2 Cola 3 Cola 4 Cola 5=nc
EJEMPLO: Considerando que se tiene el registro de los vehículos por año en un Conjunto de Colas
1 2 3, 4 ,5, 6…. n-1 N - n+1,
n+2
Suponiendo que se tiene una ColaV con vehículos. Se pide almacenar los vehículos en ConjuntoCV
a) En la cola del año X
Almacenar(ColaV a, ConjuntoCV b, int x)
{
Pos=x-1999 /// pos=x-2000+1
If pos<=b.getNc() and pos>0
{
b.vaciar(pos,a)
}
}
b) Distribuir la cola al ConjuntoCV
Distribuir(ColaV a, ConjuntoCV b)
{ pos=1
While not a.esvacia()
{ vehi=a.eliminar()
b.adicionar(vehi,pos)
if pos=b.getNc()
pos=1
else
pos=pos+1
}
}
c) En el año X no hay importación, por tanto se pide vaciar al año anterior. Si es el año base
llevar al último año.
Llevar(ConjuntoCV a, int x)
{ pos=x-2000+1
If pos<=a.getNc() and pos>0
{
If pos=1
a.vaciar(a.getNc(),pos)
else
a.vaciar(pos-1,pos)
}
}
d) Ordenar los vehículos de las colas por el modelo, sin usar estructuras auxiliares
Ordenar(ConjuntoCV w)
{
For i=1 to w.getNc()
{
While not w.esvacia(i)
{
men=w.eliminar(i)
while not w.esvacia(i)
{ ve=w.eliminar(i)
If ve.getModelo()<men.getModelo()
{ w.adicionar(men,w.getNc()+1)
men=ve
}
else
w.adicionar(ve,w.getNc()+1)
}
w.adicionar(men,w.getNc()+2)
w.vaciar(i,w.getNc()+1)
}
w.vaciar(i,w.getNc()+2)
}
}
e)
Problemas a resolver
1. Eliminar la i-esima cola, y sus elementos llevar a la j-esima cola (i<>j) 1<=i,j<=nc
2. Reorganizar las colas de tal manera que los vehículos con modelo 2000 estén en la cola 1, con
modelo 2001 estén en la cola 2, con modelo 2002 estén en la cola 3, … con modelo 2019 en la
cola 20, y modelos por debajo del 2000 se almacenen en la cola 21.