Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase Nro5 ColasCirculares
Clase Nro5 ColasCirculares
COLAS CIRCULARES
} 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
}
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)
}
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)
{
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
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)
}
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()
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())
}