Você está na página 1de 18

Estruturas de Dados

Prof. Perini
Sistemas de Informação
Ciência da Computação
Disciplina: Estrutura de Dados
- Revisão para Bimestral
- Estruturas
- TAD (Tipo Abstrato de Dados)
- Lista duplamente ligada

Profº José Carlos Perini


Estruturas

3
Estruturas

4
Estruturas

5
TAD: Lista Encadeada
Alocação Dinâmica de Memória:

• Estrutura dinâmica, criada vazia;

• Os elementos são chamados de “nós”;

• Estrutura homogênea: os nós, normalmente, são todos do


mesmo tipo;

• Tamanho da lista é dado pelo número de nós da lista;

• Condiciona o crescimento da lista à disponibilidade de


memória.
6
TAD: Lista Encadeada
Alocação Dinâmica de Memória:

• Cada nó é alocado dinamicamente (através do comando


malloc);

• Os nós não estão armazenados, necessariamente, em


sequência física na memória;

• Cada nó guarda, além da informação (info), o endereço de


memória onde se encontra o próximo nó da lista (prox);

7
TAD: Lista Encadeada
Tipos de Listas Encadeadas:

• Singularmente Encadeada: contém um elo com o próximo


item de dado (usa apenas um ponteiro);

• Duplamente Encadeada: contém elos tanto com o


elemento anterior quanto com o próximo elemento da lista
(uso de duas variáveis do tipo ponteiro).

8
TAD: Lista Encadeada
Representação Gráfica de uma Lista Encadeada:

L Dado Dado Dado Dado


(Início da lista)
Link Link Link Link

NULL
Lista Singularmente Encadeada (fim da lista)

9
TAD: Lista Encadeada
Representação Gráfica de uma Lista Encadeada:

L Dado Dado Dado


(Início da lista) Link Link Link Link Link Link

NULL
(fim da lista)
Lista Duplamente Encadeada

Lista Vazia

NULL

10
Lista Duplamente Ligada – O nó e o
tipo lista

11
Lista Duplamente Ligada – as
operações

12
Lista Duplamente Ligada – Consulta
geral da lista

13
Lista Duplamente Ligada – Remoção de
um elemento de uma posição da lista

14
Lista Duplamente Ligada – Remoção de
um elemento de uma posição da lista

15
Lista Duplamente Ligada – Testando
Exercício
1. Suponha que para uma estrutura de dados, tipo lista ligada duplamente
encadeada para números inteiros, são definidos os comandos:
Inicializa(*lista): inicializa a lista duplamente encadeada.
Insere(n, *lista): inclui um número “n” no final da lista duplamente.
Insere_inicio(n, *lista): inclui um número “n” no início da lista.
Retira_pos(pos, *lista): remove o elemento da posição pos da lista.
Retira_elem(n, *lista): remove o elemento n da lista.
Considere que para uma lista inicialmente vazia, sejam executados os seguintes
comandos:
Insere(5, *lista);
Insere(10, *lista);
Insere(15, *lista);
Retira_elem(10, *lista);
Insere(20, *lista);
Insere_inicio(3, *lista);
Insere_inicio(30, *lista);

Após os comandos acima, como ficará a lista?


17
Perguntas

18

Você também pode gostar