Skip to content

Lista duplamente encadeada desenvolvida na disciplina Estruturas de Dados

Notifications You must be signed in to change notification settings

marinabenvenuti/Lista-duplamente-encadeada

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lista Duplamente Encadeada

Lista duplamente encadeada desenvolvida na disciplina Estruturas de Dados

Autores: Yano e Marina

Funcionamento

A Lista Duplamente Encadeada foi implementada utilizando duas classe: Element e LinkedList, a primeira para servir de preenchimento para a lista e a segunda a lista propriamente dita.

Os métodos da lista podem ser divididos em quatro: Métodos de Apoio, Métodos de Adição, Métodos de Deleção e Métodos do Cursor.

Falando primeiramente dos Métodos de Apoio, o principal deles é o método get_cursor_position(), que serve para conseguir a posição atual do cursor, além da função óbvia que ele executa, este método também é utilizado em casos que é preciso percorrer a lista e recuperar a posição de um determinado elemento, como é o caso de position_of(), ou então, para o cálculo de posição em go_to_position(), forward() e backward(), ambos Métodos de Cursor que iremos tratar mais adiante. Além desse método temos também is_full() e is_empty(), que indicam a lotação da lista e permitem o lançamento de exceções conforme o seu retorno.

Os Métodos de Adição. Todos possuem uma verificação para ver se a lista já está cheia utilizando o método de apoio is_full(), caso a resposta seja verdadeira uma exceção é levantada, além disso, todos adicionam uma unidade ao atributo "counter". Tanto set_last() quanto em set_first() o cursor não é movimentada quando os métodos são chamadas, apenas caso o elemento seja o primeiro adicionado na lista. Em add_next() o cursor se move para o elemento adicionado, a adição funciona apenas apontando o atributo "next" do elemento adicionado para o "next" do cursor, o "next" do cursor para o elemento e o "previous" do elemento para o cursor e logo em seguida, adicionando o elemento como cursor da Lista. A mesma lógica é utilizada por add_in_position(), que utiliza add_next() como base, apenas com o adicional de ir para a posição anterior a que o usuário deseja adicionar o elemento, utilizando o método go_to_position(), um método de cursor.

Os Métodos de Deleção. O primeiro método de deleção é o delete_current() que apenas pega o "next" e o "previous" do cursor, e muda seus atributos, respectivamente, para o "previous" e o "next" do cursor. Os métodos delete_first() e delete_last() funcionam da mesma forma que seus equivalentes na adição. O mesmo vale para delete_in_position() que também utiliza go_to_position() como base. Já no caso de delete_by_value() duas funções são utilizadas de apoio, a primeira position_of() que retorna a posição de um elemento pelo seu valor e passando essa posição como parâmetro de delete_in_position(), conseguimos executar o propósito da nossa função.

Os Métodos de Cursor. Todas as funções de cursor, com exceção de go_to_first() e go_to_last(), utilizam a função get_cursor_position() para executar cálculos de posição em relação ao cursor, em go_to_position() o valor do sinal determina se a função irá utilizar forward() e backward() para o deslocamento.

About

Lista duplamente encadeada desenvolvida na disciplina Estruturas de Dados

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages