Professional Documents
Culture Documents
Colas
ListasEnlazadas
Colasdoblemenreenlazadas
Colas
Unacolasediferenciadeunapilaenquelasoperacionesdeinserciny
extraccinsiguenelprincipiodeprimeroenentrarprimeroensalir
(firstinfirstout,FIFO).
Loselementossepuedeninsertarencualquiermomento,perosoloel
elementoquehapermanecidoelmayortiempopuedeserextrado.
Loselementosseinsertan(enqueued)alfinal(rear)yseextraen
(dequeued)desdeelfrente(front).
EltipodeDatoAbstractoCola
Lacolatienedosmtodosfundamentales:
enqueue(o):
Insertaobjectooalfinaldelacola
dequeue():
Extraeelobjetodelfrentedelacolaylo
devuelve;
ocurreunerrorsilacolaestvaca
Lossiguientesmtodosdesoportedebenserdefinidos:
size():
Devuelveelnemrodeobjetosenlacola
isEmpty():
Devuelveunvalorlgicoqueindicasilacolaest
vaca
front(): Devuelve,sineliminar,elobjetodelfrentedelacola;
ocurreunerrorsilacolaestvaca
ColabasadaenArray
Creaunacolausandounarraydeformacircular.
SeespecificauntamaomximoN,e.g.N=1,000.
LacolaconsistedeunarrayQdeNelementosydosvariablesenteras:
f,ndicedelelementodelfrente
r,ndicedelelementosiguientealfinaldelacola
configuracinnormal
Preguntas:
Qusignificaf=r?
Cmosecalculael
nmerodeelementosen
lacoladesdefyr?
ColabasadaenArray(1)
Pseudocdigo
Algoritmosize():
return(Nf+r)modN
AlgoritmoisEmpty():
return(f=r)
Algoritmofront():
ifisEmpty()then
throwa
QueueEmptyException
returnQ[f]
Algoritmodequeue():
ifisEmpty()then
throw
QueueEmptyException
tempQ[f]
Q[f]null
f(f+1)modN
returntemp
Algoritmoenqueue(o):
ifsize=N1then
throw
QueueFullException
Q[r]o
ImplementacindeunaColacon
unaListaEnlazadaSimple
ListaEnlazadaSimple:Nodosconectadosencadenaporenlaces
Lacabezadelalistaeselfrentedelacola,lacoladelalistaes
elfinaldelacola.Porqunolocontrario?
ExtracindelaCabeza
Insertandoporlacola
Colasconfinalesdobles
Unacolacondoblefinal,odeque,soportainsercinyextraccindesde
elfrenteyelfinal.
ElTipodeDatoAbstractoDeque
insertFirst(e):
Insertaealdeiniciodeladeque.
insertLast(e):
Insertaealdefinaldeladeque
removeFirst():
Extraeydevuelveprimerelemento
removeLast():
Extraeydevuelveltimoelemento
Mtodosdesoporteadicionales:
first()
last()
size()
isEmpty()
ImplementandoPilasyColascon
Deques
PilasconDeques:
ColasconDeques:
10
ElPatrnAdaptor
Elusodeundequeparaimplementarunapilaocolaesunejemplo
delpatrnadaptor.LospatronesAdaptorpatternsimplementanuna
clasemedianteelusodemtodosdeotraclase.
Engeneral,lasclasesadaptorespecializanclasesgenerales
Dosaplicacionesson:
Especializarunaclasegeneralmediantelamodificacinde
algunosmtodos.
Ej:implementacindeunapilaconundeque.
Especializarlostiposdeobjetosusadosporunaclasegeneral.
Ej:DefinicindelaclaseIntegerArrayStackqueadapta
ArrayStackparaalmacenarsoloenteros.
11
ImplementacindeDequescon
ListasDoblementeEnlazadas
Laeliminacinalfinaldeunalista
enlazadasimplenosepuederealizaren
tiempoconstante.
Paraimplementarunadeque,seusa
unalistadoblementeenlazada,con
nodoscabecerosyfinalesespeciales
Unnododeunalistadoblementeenlazadatieneunenlacenextyprev.
Soportalossiguientesmtodos:
setElement(Objecte)
setNext(ObjectnewNext)
setPrev(ObjectnewPrev)
getElement()
getNext()
getPrev()
Medianteelusodeunalistadoblementeenlazada,todoslosmtodosdeun
correnentiempoO(1).
12
ImplementacindeDequescon
ListasDoblementeEnlazadas(1)
Cuandoseimplementanlistasdoblementeenlazadas,seaadendos
nodosespecialesenlosfinalesdelaslistas:losnodosheaderytrailer.
Elnodoheadervaantesdelprimerelementodelalista.Tieneun
enlacevlidonextynullcomoenlaceprev.
Elnodotrailervadespusdelltimoelemento.Tieneuna
referenciaprevvlidaperounareferencianulaennext.
NOTA:losnodosheadery
trailersoncentinelasonodos
vaciosporquenoguardan
elementos.
13
ImplementacindeDequescon
ListasDoblementeEnlazadas(2)
Visualizacindel
cdigopara
removeLast().
14