Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
TAD Deque
Maikol M. Rodrigues
Turmas A e B (UNIFOR)
Adicionamentepodeseacrescentarosseguintesmtodos:
first()
last()
size()
isEmpty()
Deleodoltimoelementodeumalistasimplesmente
encadeadanopodeserfeitoemtempoconstante.
ParaimplementaroDequeutilizaremosumalistaduplamente
encadeadacomdoisnsSENTINELAS.
5
Classe DLNode
class DLNode {
private Object element;
private DLNode next, prev;
DLNode() { this(null, null, null); }
Classe DLNode
header.setNext(trailer);//makeheaderpointtotrailer
trailer.setPrev(header);//maketrailerpointtoheader
size=0;
}
header.setNext(first);
size++;
}
10
11
Exerccios de Reviso
1)
1) Implemente
Implemente um
um mtodo
mtodo para
para inverter
inverterencapsuencapsulados
lados na
na classe
classe MyDeque
MyDeque acessando
acessando diretamente
diretamente aa
Estruturas
Estruturas de
de Dados.
Dados.
2)
2) Implemente
Implemente um
um mtodo
mtodo para
para inverter
inverterencapsuencapsulados
lados na
na classe
classe MyDeque
MyDeque usando
usando as
as operaes
operaes
bsicas
bsicas do
do Deque.
Deque.
3)
3) Reimplemente
Reimplementeaa classe
classe MyDeque
MyDeque sem
sem aa
utilizao
utilizao de
de ns
ns SENTINELAS.
SENTINELAS.
13
Exerccios
1)
1) Implemente
Implemente oo mtodo
mtodo removeFirst()
removeFirst() ee
insertLast()
insertLast() encapsulados
encapsulados na
na classe
classe MyDeque.
MyDeque.
2)
2) Utilizando
Utilizando os
os mtodos
mtodos da
da classe
classe MyDeque
MyDeque
implemente
implemente aa classe
classe Pilha
Pilha ee aa classe
classe Fila.
Fila.
3)
3) Reimplemente
Reimplemente aa classe
classe MyDeque
MyDeque usando
usando uma
uma
Lista
Lista Simplesmente
Simplesmente Encadeada
Encadeada sem
sem aa utilizao
utilizao
de
de ns
ns SENTINELAS.
SENTINELAS.
14
Exerccios
4)
4) Programe
Programe as
as operaes
operaes bsicas
bsicas para
para deque,
deque,
na
na representao
representaopor
porlista
lista linear
linearsimplesmente
simplesmente
encadeada.
encadeada.
5)
5) Implemente
Implemente oo TAD-Deque
TAD-Deque usando
usando vetor
vetorde
de tal
tal
forma
forma que
queoo primeiro
primeiroelemento
elemento sempre
sempreseja
seja oo da
da
posio
posio 11 do
do vetor.
vetor.(CASA)
(CASA)
6)
6)Descreva
Descrevaem
empseudocdigo
pseudocdigoum
ummtodo
mtodopara
paraencontrar
encontrar
oonodo
nododo
domeio
meiode
deuma
umaLDE
LDEcom
comsentinelas
sentinelaseeum
umnmero
nmero
mpar
mparde
dens.
ns.No
Nouse
usecontadores.
contadores.
15
ant.setNext(last);
size++;
}
16
RemoveFirst
public Object removeFirst() throws
DequeEmptyException {
if (isEmpty())
throw new DequeEmptyException("Deque is
empty.");
DLNode first = header.getNext();
Object o = first.getElement();
DLNode second = first.getNext();
header.setNext(second);
second.setPrev(header);
size--;
return o;
QueueswithDeques:
}
publicvoidpush(Objectobj){
D.insertLast(obj);
}
19
try{returnD.removeLast();}
catch(DequeEmptyExceptione){
thrownewStackEmptyException("Stackisempty!");
20
}
DequeStackA1=newDequeStack();
Characterb=newCharacter('A');
Integerc=newInteger(9);
A1.push(newInteger(3));A1.push(b);A1.push(c);
Exerccios
1)
1) Descreva
Descreva um
um algoritmo
algoritmo recursivo
recursivo para
para contar
contar
oo nmero
nmerode
de elementos
elementos em
em uma
uma lista
lista simplessimplesmente
mente encadeada.
encadeada. Use
Use aa classe
classe LinkedStack.
LinkedStack.
2)
2) Utilizando
Utilizando os
os mtodos
mtodos da
da classe
classe MyDeque
MyDeque
implemente
implemente aa classe
classe Fila.
Fila.
3)
3) Descreva
Descreva um
um algoritmo
algoritmo recursivo
recursivo para
para para
para
determinar
determinaroo maior
maiorelemento
elemento em
em um
um Arranjo
ArranjoAA
de
de nn elementos.
elementos. (CASA)
(CASA)
22
Exerccios
4)
4)Implemente
Implementeum
ummtodo
mtodopara
parainverter
inverterum
umDeque
Dequeutilizando
utilizando
uma
umaPilha
PilhaAuxiliar.
Auxiliar.OBS:Voc
OBS:Vocpoder
poderutilizar
utilizaras
asOB
OBde
de
Deque
DequeeePilha.
Pilha.Refaa
RefaaUsando
UsandoFila
Filaem
emvez
vezda
daPilha.
Pilha.
5)
5) Refaa
Refaa oo exerccio
exerccio anterior
anteriorusando
usando uma
uma Fila
Fila
como
como ED
ED auxiliar.
auxiliar.
6)
6)Descreva
Descrevaem
empseudocdigo
pseudocdigoum
ummtodo
mtodopara
paraencontrar
encontraroonodo
nodo
do
domeio
meiode
deuma
umaLDE
LDEcom
comsentinelas
sentinelascom
comum
umnmero
nmerompar
mparde
de
ns.
ns.No
Nouse
usecontadores.
contadores.Refaa
Refaaooexerccio
exercciopara
pararetornar
retornarnull
null
quando
23
quandooonmero
nmerode
deelementos
elementosfor
forpar.
par.
Exerccios
7)
7)Inverta
Invertauma
umaPilha
Pilhaimplementada
implementadacom
comuma
umaLista
Lista
Simplesmente
SimplesmenteEncadeada
Encadeadautilizando
utilizandoapenas
apenasreferncias.
referncias.
No
Noutilize
utilizealocao
alocaode
dememria
memriaeenem
nemED
EDadicionais.
adicionais.
8)
8)Inverta
Invertaaaordem
ordemdos
doselementos
elementosna
napilha
pilhaS.
S.
Usando
Usandoum
umDeque
Deque
b.b. Usando
Usandouma
umapilha
pilhaadicional
adicionaleealgumas
algumasvariveis
variveisadicionais
adicionais
24
Exerccios
public static int maior(int[] a, int pos, int maior) {
if (pos == a.length) return maior;
else if (a[pos] > maior) return maior(a, (pos+1), a[pos]);
else return maior(a, (pos+1), maior);
}
25