Académique Documents
Professionnel Documents
Culture Documents
DE MINAS GERAIS
Listas Lineares
Listas Lineares COMPUTER
SCIENCE
#define MIN 0
#define MAX 1000
typedef struct {
TChave Chave;
/* outros componentes */
} TItem;
typedef struct {
TItem Item[MAX];
Apontador Primeiro, Ultimo;
} TLista;
Implementação por Arranjos COMPUTER
SCIENCE
// insere x na posição p
void InsereP(TItem x, TLista *Lista, Apontador p) {
int i;
• Vantagens
– Economia de memória (“apontadores implícitos”)
– Localidade de acesso (blocos contíguos de memória)
– Acesso O(1) a qualquer item
• Desvantagens
– Inserção e remoção pode causar o deslocamento de
todos os itens no pior caso
– Em aplicações em que não existe previsão sobre o
crescimento da lista, o tamanho máximo da lista tem
de ser definido em tempo de compilação
Implementação por Apontadores COMPUTER
SCIENCE
typedef struct {
TChave Chave;
/* outros componentes */
} TItem;
typedef struct {
Apontador Primeiro, Ultimo;
} TLista;
Implementação por Apontadores COMPUTER
SCIENCE
Primeiro
?
NULL
Último
Implementação por Apontadores COMPUTER
SCIENCE
Primeiro Último
Primeiro Último
Primeiro Último
Primeiro Último
x
prox
x
prox
• Vantagens
– Inserção e remoção têm custo constante
• Importante quando a ordem precisa ser mantida
– Tamanho máximo não precisa ser definido a priori
• Importante quando não há previsão sobre crescimento
• Desvantagens
– Memória extra para armazenar os apontadores
– Baixa localidade de acesso (memória não-contígua)
– O(n) para acessar um item no pior caso