Sei sulla pagina 1di 16

Listas Encadeadas

Raquel O. Prates, Luiz Chaimowicz, Jussara Almeida


Algoritmos e Estruturas de Dados II
DCC – UFMG

1
Listas Encadeadas

 Características:
 Tamanho da lista não é pré-definido
 Cada elemento guarda quem é o próximo
 Elementos não estão contíguos na memória

info

NULL
prox info
info NULL
info
prox info

NULL
prox
© R. O. Prates Algoritmos e Estrutura de Dados II
Sobre os Elementos da Lista
 Elemento: guarda as informações sobre
cada elemento.
 Para isso define-se cada elemento como uma
estrutura que possui:
 campos de informações
 ponteiro para o próximo elemento

info

prox

© R. O. Prates Algoritmos e Estrutura de Dados II


Sobre a Lista
 Uma lista é definida como um apontador para a primeira célula
 Uma lista pode ter uma célula cabeça

info info info

prox prox prox NULL

Último

Primeiro
 Uma lista pode ter um apontador para o último
elemento
© R. O. Prates Algoritmos e Estrutura de Dados II
Implementação em C
typedef int TipoChave;

typedef struct {
TipoChave Chave;
/* outros componentes */
} TipoItem;

typedef struct Celula_str *Apontador;

typedef struct Celula_str {


TipoItem Item;
Apontador Prox;
} Celula;

typedef struct {
Apontador Primeiro, Ultimo;
} TipoLista;

© R. O. Prates Algoritmos e Estrutura de Dados II


Cria Lista Vazia
Cabeça

Primeiro
NULL

Último
void FLVazia(TipoLista *Lista)
{
Lista->Primeiro = (Apontador) malloc(sizeof(Celula));
Lista->Ultimo = Lista->Primeiro;
Lista->Primeiro->Prox = NULL;
}

int Vazia(TipoLista Lista)


{
return (Lista.Primeiro == Lista.Ultimo);
}

© R. O. Prates Algoritmos e Estrutura de Dados II


Inserção de Elementos na Lista

info info info

prox prox prox NULL

Último

Primeiro
 3 opções de posição onde pode inserir:
 1ª. posição
 última posição
 Após um elemento qualquer E

© R. O. Prates Algoritmos e Estrutura de Dados II


Inserção na Primeira Posição
Novo info

NULL
prox

info info info

prox prox prox NULL

Último

Primeiro

© R. O. Prates Algoritmos e Estrutura de Dados II


Inserção na Última Posição
Novo

info info info info

prox prox prox NULL


prox NULL

Último

Primeiro

© R. O. Prates Algoritmos e Estrutura de Dados II


Inserção na Após o Elemento E
Primeiro
Novo info

NULL
prox

info info info

prox prox prox NULL

Último

Elem E

© R. O. Prates Algoritmos e Estrutura de Dados II


Inserção de Elementos na Lista

 Na verdade, as 3 opções de inserção


são equivalentes a inserir após uma
célula apontada por p
 1ª. posição (p é a célula cabeça)
 Última posição (p é o último)
 Após um elemento qualquer E (p aponta
para E)

© R. O. Prates Algoritmos e Estrutura de Dados II


Retirada de Elementos na Lista

info info info

prox prox prox NULL

Último

 3 opções de posição de onde pode retirar:


 1ª. posição
 última posição
 Um elemento qualquer E

© R. O. Prates Algoritmos e Estrutura de Dados II


Retirada do Elemento na
Primeira Posição da Lista
Temp

info info info

prox prox prox NULL

Último

Primeiro

© R. O. Prates Algoritmos e Estrutura de Dados II


Retirada do Elemento E da Lista

info info info

prox prox prox NULL

Último

Primeiro Anterior

Elem E

© R. O. Prates Algoritmos e Estrutura de Dados II


Retirada do Último Elemento da Lista

info info info

prox prox NULL


prox NULL

Último

Primeiro
Anterior

© R. O. Prates Algoritmos e Estrutura de Dados II


Exercícios
 Implemente uma função que, dada uma lista
encadeada e uma determinada chave C,
remove o elemento com essa chave

 Implemente uma função que remova todos


os elementos de valor par de uma lista
encadeada

© R. O. Prates Algoritmos e Estrutura de Dados II

Potrebbero piacerti anche