28.02.2023 Views

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;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!