0% acharam este documento útil (0 voto)
5 visualizações4 páginas

Linked List

Enviado por

JR Hanyou
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações4 páginas

Linked List

Enviado por

JR Hanyou
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 4

Linked list

Definição
Uma linked list é uma alternativa para array. Essa estrutura é
implementada usando pointers.

Um elemento em uma linked list contém o valor e um pointer até o


próximo elemento. O último elemento da lista terá um valor Null
ou 0.

Uma corrente é uma linked list na qual cada elemento leva ao


próximo na lista.

class ListNode{
friend class List;
private:
int data;
ListNode *link; //o asterisco é o que, em c/c++,
faz o papel de pointer
}

class List{
public:
//Métodos da lista que serão acessados
posteriormente
// ...
private:
ListNode *first; //também escolhido para ser
representado como "head" em algumas literaturas
}

Correntes
Como definido, corrente é a lista. Abaixo estarão as operações
dadas nessa corrente.

Busca

//O exemplo dado possui muitas especificidades que não são


necessárias da estrutura por definição, como uma busca
poderia retornar um o valor desejado ou o próximo. Ou o
método desse modo ser utilizado em complemento a outros
métodos.
bool List::Search(int k){
for (ListNode current = first; current; current =
current->next){
if (current->data == k) return True;
};
return False;
}

No pior caso, o Busca terá percorrido todos os n elementos da


lista, portanto, o pior caso, em tempo é: Θ(n).

A ideia da busca é pesquisar pela corrente o valor desejado,


usando como vantagem de condição o fato de que o último
elemento apontará para None ou 0.

busca-linked-list
Inserção
Em ordem de inserir um elemento na corrente é necessário apenas
trabalhar os links.

Quando o novo elemento estiver no meio entre dois, será


necessário fazer o anterior apontar para o novo, enquanto o qual o
anterior apontava, será apontado pelo novo;

insert-linked-list

Remoção
Em ordem de remover um elemento na corrente é necessário
apenas trabalhar os links.

Para deletar um elemento, é necessário, ao contrário da inserção,


fazer um novo link entre o anterior e o posterior ao elemento
removido.

A complexidade da remoção de um elemento é de Θ(1).


remove-linked-list

Discussão sobre complexidade


A complexidade de inserção e remoção depende do contexto no
qual é usado a linked list.

Por exemplo, se a lista tiver que ser ordenada, então a inserção


do elemento deve ser feita para manter a propriedade de
ordenação (o que pode ter Θ(n) de tempo). No entanto, se a lista
é não-ordenada, então a inserção pode ter lugar em qualquer
parte da lista. Em particular, o elemento poderia ser inserido no
começo da lista em Θ(1) de tempo.

A ordenação em listas linkadas é mais trabalhosa, constantemente


sendo necessário percorrê-la e buscar acessar seus valores
isoladamente.

Bibliografias
@Book{Handbook of DATA STRUCTURES, author={N1.
Sobrenome1 and N2. Sobrenome2}, title={Nome do Livro},
publisher={Editora}, year={ano}, volume={volume}}

JrOkean

Você também pode gostar