Você está na página 1de 12

Lista Encadeada Circular

1
Relembrando listas encadeadas
 Um nó em uma Lista Encadeada possui
basicamente dois itens:
– ponteiro para o próximo
– informação armazenada

 Caso a informação não seja um dado simples:


criar vários campos, um para cada informação

Ex.: código, preço e quantidade de um produto


2
Relembrando listas encadeadas
typedef struct tp_no {
int cod;
float preco;
int quant;
struct tp_no *prox;
} TPLISTA;
TPLISTA *lista;
...
lista->cod=1;
lista->preco=10.5;
3 lista->quant=20;
Listas Circulares
 A lista circular é uma espécie de lista simplesmente ou duplamente
encadeada, com uma característica adicional para o deslocamento
na lista, "ela não tem fim".
 Útil quando:
– a busca é feita a partir de qualquer elemento
– não há ordenação na lista
 A rigor não existe "primeiro" ou "último"
 Ainda é necessário que exista um ponteiro para algum elemento,
para a localização da lista
– por convenção, referência do primeiro ou do último

lista
4 1 8 5

4
5
Listas Circulares
 Uma lista circular pode ser simples ou duplamente
encadeada. O que caracteriza as listas circulares é o fato do
sucessor do último elemento ser o primeiro elemento da lista.
 No caso de uma lista duplamente encadeada, o predecessor
do primeiro elemento é o último elemento da lista.
 Para tornar a lista interminável, o ponteiro seguinte do
último elemento apontará para o primeiro elemento da
lista, em vez do valor NULL, como vimos no caso das listas
simplesmente e duplamente encadeadas.
 Nunca chegaremos a uma posição a partir da qual não
poderemos mais nos mover. Chegando ao último elemento, o
deslocamento vai recomeçar no primeiro elemento. Em suma,
trata-se de uma rotação.
6
Listas Circulares
 Representação 1

7
Listas Circulares
 Representação 2

8
Lista Circular: liberar lista

9
Lista Circular: tamanho Lista

10
Lista Circular: insere no início

11
Lista Circular: insere no final

12

Você também pode gostar