Escolar Documentos
Profissional Documentos
Cultura Documentos
Em algumas situações não podemos resolver o Uma lista é uma seqüência de n nodos de um
problema de armazenamento na forma sequencial, sem determinado tipo. Normalmente representamos uma
algum critério para facilitar busca ou inserção. lista por uma seqüência de elementos separados por
vírgula x1, x2, x3, ...., xn
Busca, inserção e remoção mais lentas.
Onde n >= 0. O número n de elementos é o
Situações onde o repositório ou coleção de dados segue comprimento da lista. Se n > 0 então dizemos que x1
um comportamento diferenciado, onde podemos é o primeiro elemento da lista e xn é o último
devemos fazer outros tipos de acesso à informação elemento. Se n = 0 então a lista está vazia. Uma
Por exemplo: propriedade importante da lista é que os elementos
simulação de filas de pessoas, pilhas de ações, listas de
podem ser ordenados linearmente de acordo com sua
posição na lista. Se 1 < k < n então xk é o k-
mensagens, ...
ésimo elemento, precedido pelo elemento xk-1 e
sucedido pelo elemento xk+1. Dizemos ainda que o
elemento xi está na posição i.
Características: Características:
Inserção: em qualquer posição. Inserção: em qualquer posição.
Busca: em qualquer posição. Busca: em qualquer posição.
Remoção: em qualquer posição. Remoção: em qualquer posição.
Requer estratégia de gerenciamento (alfabética, Requer estratégia de gerenciamento (alfabética,
cronológica, prioridade, ...). cronológica, prioridade, ...).
Sempre é mantido um ponteiro para o primeiro Sempre é mantido um ponteiro para o primeiro
registro registro
Exemplos: Exemplos:
Lista de mapas Beltrano Fulano ? Lista de mapas Beltrano Delgrano ?
Cicrano Cicrano
Lista de pessoas Lista de pessoas
Fulano
Lista de mensagens Lista de mensagens
1
Estruturas de dados - Listas Estruturas de dados - Listas
2
Estruturas de dados - Listas Estruturas de dados - Listas
Alocação dinâmica á feita com ponteiros para o Alocação dinâmica á feita com ponteiros para o
próximo registro da lista. próximo registro da lista.
Não é necessário pré-definir um tamanho de memória Não é necessário pré-definir um tamanho de memória
para alocar para estrutura. Enquanto houver memória para alocar para estrutura. Enquanto houver memória
disponível para ser alocada, pode-se aumentar disponível para ser alocada, pode-se aumentar
dinamicamente a estrutura. dinamicamente a estrutura.
Não há necessidade de procedimento de Não há necessidade de procedimento de
redimensionamento da estrutura. redimensionamento da estrutura.
É o que chamamos de lista encadeada É o que chamamos de lista encadeada
Exemplo: Exemplo:
0 Beltrano 1 1 Cicrano 2 2 Fulano 0 Beltrano 1 1 Cicrano 2 2 Fulano
class Pessoa { class Pessoa {
char *nome; char *nome;
}
Pessoa *proximo; 3 Delgrano ? }
Pessoa *proximo; 3 Delgrano ?
15-abr-08 Leandro Tonietto 13 15-abr-08 Leandro Tonietto 14
Alocação dinâmica á feita com ponteiros para o Alocação dinâmica á feita com ponteiros para o
próximo registro da lista. próximo registro da lista.
Não é necessário pré-definir um tamanho de memória Não é necessário pré-definir um tamanho de memória
para alocar para estrutura. Enquanto houver memória para alocar para estrutura. Enquanto houver memória
disponível para ser alocada, pode-se aumentar disponível para ser alocada, pode-se aumentar
dinamicamente a estrutura. dinamicamente a estrutura.
Não há necessidade de procedimento de Não há necessidade de procedimento de
redimensionamento da estrutura. redimensionamento da estrutura.
É o que chamamos de lista encadeada É o que chamamos de lista encadeada
Exemplo: Exemplo: 0 Beltrano 1 1 Cicrano 3 2 Fulano
0 Beltrano 1 1 Cicrano 2 2 Fulano
class Pessoa { class Pessoa {
char *nome; char *nome;
}
Pessoa *proximo; 3 Delgrano ? }
Pessoa *proximo; 3 Delgrano 2
3
Estruturas de dados - Listas Estruturas de dados - Listas
Id *A Descrição *P Id *A Descrição *P
Exemplo: Exemplo:
primeiro primeiro
último último
0 Beltrano 1 1 0 Cicrano 2 2 1 Fulano 0 Beltrano 1 1 0 Cicrano 2
3 2 1
3 Fulano
3 Delgrano ? 3 1
Delgrano 2