Logica_de_Programacao_3_Edicao_Livro
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Capítulo 7 Estruturas de dados avançadas 1 161
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53. fimse;
54. fi11111ódulo;
fimse;
se começo= O /1 lista vazia
então inicio
começo~ pos;
lista[pos].prox ~ O;
fim;
senão inicio
lista[pos].prox ~ antecessor;
antecessor~ pos;
fim;
fimse;
Conforme pode1nos notai~ o módulo Insere faz uso de un1 módulo Novo, que tern por objetivo
encontrar a prin1eira posição disponível no vetor (quando houver), e utiliza ta1nbém
o 1nódulo Existe, ctüo propósito é avaliar se uma dada posição pertence ao encadeamento
da lista.
Dessa forrna, no rnódulo Insere foi possível: consistir a existência do parân1etro Antecessor,
a localização e utilização da primeira posição disponível, além de incluir um tratamento
especial para o caso de a lista estar vazia.
Assim, o exen1plo anterior poderia ser acionado da seguinte for1na:
Insere ("Farmácia", li sta[6] .prox); 11 meio da lista, ex a)
Insere ("Farmácia", l i sta[4) .prox); // fim da lista, ex b)
Insere ("Farmácia", começo}; li início da lista, ex e)
Remoção
Qualquer ele1nento que fosse removido seria simplesn1ente 'desligado' da lista, isto é,
nenhum outro ele1nento da lista o encararia como sucessor, mesmo que continuasse ocupando
urna das posições do vetor. Exe1nplificarnos, então, a rernoção de urn elemento ern
. . -
tres s1tuaçoes:
a) No 1neio da lista: remover Correio
cartório(?) 1---'•~1
correio(5) 1---'•~l.__b_a_nc_o_(_l )_~
Antes
cartório(?)
correio(5) 1--•.il.__b_an_c_o_(_l )_~
1º passo
J!! passo: 1 i sta (7). prox ~ 1 i sta (5). prox;