Está en la página 1de 11

ESTRUCTURA DE DATOS INF-131

COLAS CIRCULARES

Cola de Datos Cola de Objetos

ColaCircular Proyecto ColaCircularP


max titulo max
v[max+1] nombreE v[max+1]
ini nota ini
fin fin
ColaCircular() getters ColaCircularP()
esvacia () setters esvacia ()
esllena () leer() esllena ()
nroelem () mostrar() nroelem ()
adicionar(elem) adicionar(elem)
eliminar () eliminar ()
llenar(n) llenar(n)
mostrar () mostrar ()
vaciar(Z) vaciar(Z)

class ColaCircularP Manejando módulos


{ private 0,1,2,3,4,5
int max=100 Mod 5
Proyecto v[max+1] ini
int ini,fin fin
public
ColaCircularP()
{
ini=fin=0

ESTRUCTURA DE DATOS INF-131 LIC. CARMEN R. HUANCA Q.


ESTRUCTURA DE DATOS INF-131

} Begin
esvacia() A=new ColaCircularP()
{ p1=new Proyecto(“aaa”,”jjj”,5)
If ini=0 and fin=0 A.adicionar(p1)
return true Read(k)
return false A.llenar(k)
} A.mostrar()
esllena()
{
If (ini=0 and fin=max) or (ini=fin and ini<>0)
Return true
Return false
}
nroelem()
{
If esvacia()
Return 0
If fin>ini return fin-ini
If ini>=fin return max-ini+fin
}
Adicionar(Proyecto elem)
{
If esllena()
Print(“Cola llena”)
Else
{ if fin=max
fin=1
else
fin=fin+1
v[fin]=elem
}
}
eliminar()
{ elem=new Proyecto()
if esvacia()
Print(“Cola vacia”(
Else
{
elem=v[ini+1]
ini=ini+1
if ini=max
ini=0
if ini=fin ini=fin=0
}
return elem
}

ESTRUCTURA DE DATOS INF-131 LIC. CARMEN R. HUANCA Q.


ESTRUCTURA DE DATOS INF-131

llenar(int n)
{
For i=1 to n
{
x=new Proyecto()
x.leer()
adicionar(x)
}
}
Mostrar()
{ aux=new ColaCircularP()
While not esvacia()
{
Proyecto p=eliminar()
aux.adicionar(p)
p.mostrar()
}
vaciar(aux)
}
vaciar (ColaCircularP Z)
{
While not Z.esvacia()
Adicionar(Z.eliminar())
}
}
PROBLEMAS
Mostrar el proyecto del Estudiante X
Ejercicio1(ColaCircularP a, String x)
{
aa=new ColaCircularP()
while not a.esvacia()
{
Proyecto p=a.eliminar()
aa.adicionar(p)
if p.getNombreE()=x
p.mostrar()
}
a.vaciar(aa)
}

ESTRUCTURA DE DATOS INF-131 LIC. CARMEN R. HUANCA Q.


ESTRUCTURA DE DATOS INF-131

Sean 2 colas, de la segunda cola insertando elemento a elemento detrás de cada elemento de la
primera cola
Insertar(ColaCircularP a,b)
{
aux=new ColaCircularP()
while not a.esvacia() and not b.esvacia()
{ p1=a.eliminar()
aux.adicionar(p1)
p2=b.eliminar()
aux.adicionar(p2)
}
If not a.esvacia()
aux.vaciar(a)
if not b.esvacia()
aux.vaciar(b)
a.vaciar(aux)
}
Insertar2(ColaCircularP a,b)
{ n=a.nroelem()
For i=1 to n
{ a.adicionar(a.eliminar())
if not b.esvacia()
a.adicionar(b.eliminar())
}
If not b.esvacia()
a.vaciar(b)
}

Noticia ColaCircularN
titulo max
texto v[max+1]
autor ini
fecha fin
getters ColaCircularN()
setters esvacia ()
leer() esllena ()
mostrar() nroelem ()
adicionar(elem)
eliminar ()
llenar(n)
mostrar ()
vaciar(Z)
Class ColaCircularN
{ private
int max=100
Noticia v[max+1]
ESTRUCTURA DE DATOS INF-131 LIC. CARMEN R. HUANCA Q.
ESTRUCTURA DE DATOS INF-131

int ini,fin
public
ColaCircularN()
{ ini=fin=0 }
esvacia ()
{
if ini=0 and fin=0
return true
return false
}
esllena ()
{
If (ini=0 and fin=max) or (ini=fin and ini<>0)
Return true
Return false
}
nroelem ()
{ if ini=0 and fin= 0 return 0
If ini<fin return fin-ini
Else
Return max-ini+fin
}
adicionar(Noticia elem)
{ if esllena()
Print(“cola llena”)
else{
if fin=max
fin=1
else
fin=fin+1
v[fin]=elem
}
}
eliminar ()
{ elem=new Noticia()
if esvacia()
Print(“cola vacia”)
Else{
elem=v[ini+1]
ini=ini+1
if ini=max
ini=0
}
Return elem
}
llenar(int n)
{

ESTRUCTURA DE DATOS INF-131 LIC. CARMEN R. HUANCA Q.


ESTRUCTURA DE DATOS INF-131

For i=1 to n
{ Noticia x=new Noticia()
x.leer()
adicionar(x)
}
}
mostrar ()
{ aux=new ColaCircularN()
While not esvacia()
{ nx=eliminar()
nx.mostrar()
aux.adicionar(nx)
}
vaciar(aux)
}
vaciar(ColaCircularN Z)
{
While not Z.esvacia()
Adicionar(Z.eliminar())
}
}
Begin
A=new ColaCircularN()
Read(n)
A.llenar(n)
A.mostrar()
//mostrar las noticias del autor X
autorX(A,”pepito”)
End
autorX(ColaCircularN a, String x)
{ aux=new ColaCircularN()
While not a.esvacia()
{ Noticia z=a.eliminar()
If z.getAutor()=x
z.mostrar()
aux.adicionar(z)
}
a.vaciar(aux)
}
autorX2(ColaCircularN a, String x)
{ n=a.nroelem()
for i=1 to n
{ Noticia z=a.eliminar()
If z.getAutor()=x
z.mostrar()
a.adicionar(z)
}
}
ESTRUCTURA DE DATOS INF-131 LIC. CARMEN R. HUANCA Q.
ESTRUCTURA DE DATOS INF-131

ESTRUCTURA DE DATOS INF-131 LIC. CARMEN R. HUANCA Q.


ESTRUCTURA DE DATOS INF-131

CSimpleA Archivo CCircularA


max nombre max
v[max+1] tipo v[max+1]
ini tamaño ini
fin fecha fin
getters CCircularA()
setters esvacia ()
leer() esllena ()
mostrar() nroelem ()
adicionar(elem)
eliminar ()
llenar(n)
mostrar ()
vaciar(Z)
Class CCircularA
{ private
int max=50
Archivo v[max+1]
int ini,fin
public
CCircularA()
{
ini=fin=0
}
esvacia()
{
If ini=0 and fin=0
Return true
Return false
}
esllena()
{
If (ini=0 and fin=max) or (ini=fin and ini<>0) // if nroelem()=max
Return true
Return false
}
nroelem()
{ if ini=0 and fin=0
Return 0
If fin>ini
Return fin-ini
Return max-ini+fin // con reutilizacion

ESTRUCTURA DE DATOS INF-131 LIC. CARMEN R. HUANCA Q.


ESTRUCTURA DE DATOS INF-131

Adicionar(Archivo elem)
{
If not esllena()
{
if fin=max
fin=1
else
fin=fin+1
v[fin]=elem
}
Else
Print(“cola llena”)
}
Eliminar()
{ Archivo elem=new Archivo()
If not esvacia()
{
ini=ini+1
elem=v[ini]
if ini=max
ini=0
if ini=fin ini=fin=0

}
Else
Print(“cola vacia”)
Return elem
}
Llenar(int n)
{
For i=1 to n
{
x=new Archivo()
x.leer()
adicionar(x)
}
}
mostrar()
{ aux=new CCircularA()
While not esvacia()
{
Archivo elem=eliminar()
elem.mostrar()
aux.adicionar(elem)
}
Vaciar(aux)
}

ESTRUCTURA DE DATOS INF-131 LIC. CARMEN R. HUANCA Q.


ESTRUCTURA DE DATOS INF-131

Vaciar(CCircularA Z)
{
While not Z.esvacia()
Adicionar( Z.eliminar())
}
}
PROBLEMAS
Mostrar los archivos del tipo X
TipoX(CCircularA W, string x)
{ aux=new CCircularA()
While not W.esvacia()
{
Archivo a=W.eliminar()
If a.getTipo()=x
a.mostrar()
aux.adicionar(a)
}
W.vaciar(aux)
}
TipoX2(CCircularA W, string x) //sin auxiliares
{
n=W.nroelem()
for i=1 to n
{ Archivo a=W.eliminar()
If a.getTipo()=x
a.mostrar()
W.adicionar(a)
}
}
Agrupar por tipo de archivos
Agrupar(CCircularA A)
{ aux,R=new CCircularA()

While not A.esvacia()


{
w=A.eliminar()
R.adicionar(w)
while not A.esvacia()
{
z=A.eliminar()
if w.getTipo()=z.getTipo()
R.adicionar(z)
else
aux.adicionar(z)
}
// R.adicionar(w)
ESTRUCTURA DE DATOS INF-131 LIC. CARMEN R. HUANCA Q.
ESTRUCTURA DE DATOS INF-131

A.vaciar(aux)
}
A.vaciar(R)
}
Sean dos colas de archivos, intercalar la segunda en la primera
Intercala(CCircularA A,B)
{ R=new CCiruclarA()
While not A.esvacia() and not B.esvacia()
{
R.adicionar( A.eliminar())
R.adicionar( B.eliminar())
}
If not A.esvacia()
R.vaciar(A)
If not B.esvacia()
R.vaciar(B)
A.vaciar(R)
}
Intercala2(CCircularA A,B)
{
n=A.nroelem()//5
m=B.nroelem()//3
if n<m
k=n
else
k=m
for i=1 to k
{
A.adicionar( A.eliminar())
A.adicionar( B.eliminar())
}
If n>m
For i=1 to n-k
A.adicionar(A.eliminar())
If m>n
For i=1 to m-k
A.adicionar(B.eliminar())
}

ESTRUCTURA DE DATOS INF-131 LIC. CARMEN R. HUANCA Q.

También podría gustarte