Listas Duplamente Ligadas/Listas Generalizadas - LAC

Propaganda
LISTAS DUPLAMENTE LIGADAS
Qual o problema com listas simples?
- a partir de uma posição p só dá para caminhar
numa direção
- se precisar acessar o nó anterior, não há outra
maneira a não ser voltar ao início
- a necessidade de remover um nó arbitrário requer
a informação sobre o endereço do nó anterior.
POR QUE?
LISTAS DUPLAMENTE LIGADAS
(cont.)
Uma solução é adotar listas DUPLAMENTE ligadas.
Um nó típico, além de conter o dado, contém
informação sobre o endereço do nó anterior e
informação sobre o endereço do nó posterior
rlink
llink
p = rlink ( llink ( p ) ) = llink ( rlink ( p ) )
LISTAS DUPLAMENTE LIGADAS
(cont.)
Algoritmo de Remoção
dDelete ( x )
{
rlink ( llink ( x ) )  rlink ( x )
llink ( rlink ( x ) )  llink ( x )
}
LISTAS DUPLAMENTE LIGADAS
(cont.)
Algoritmo de Inserção
dInsert ( p, x )
{
// insere p a direita do nó x
llink ( p )  x
rlink ( p )  rlink ( x )
llink ( rlink ( x ) )  p
rlink ( x )  p
}
Listas Generalizadas
System
E2
E1
a2
a1
P2
W2
W
P1
W1
W
r2
r1
f2
f1
c1
c2
B1
Supervisor
tr[in(B2)  in(B1)]
tr[in(B1)]
C1
WS
s1/c1
B2
C2
s2/c2
Biblioteca STL (Standard Template Library)
Download