Estrutura de Dados - Aula 04 - Listas Estáticas

90
# Estrutura de Dados # Aula 04 - Listas Estáticas (Sequencial) Prof. Leinylson Fontinele Pereira

Transcript of Estrutura de Dados - Aula 04 - Listas Estáticas

Page 1: Estrutura de Dados - Aula 04 - Listas Estáticas

# Estrutura de Dados #Aula 04 - Listas Estáticas

(Sequencial)

Prof. Leinylson Fontinele Pereira

Page 2: Estrutura de Dados - Aula 04 - Listas Estáticas

Na aula anterior...

Aula de Revisão de C

Ponteiros

Funções

etc

17:24 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 3: Estrutura de Dados - Aula 04 - Listas Estáticas

Introdução

17:24 3 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 4: Estrutura de Dados - Aula 04 - Listas Estáticas

O que vamos aprender?

Listas Estáticas Sequencial# Propriedades

# Operações fundamentais

17:24 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 5: Estrutura de Dados - Aula 04 - Listas Estáticas

Vamos começar?

17:24 5 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 6: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24

O que é uma Lista?

Estrutura de Dados: Aula 04 - Listas Estáticas

Page 7: Estrutura de Dados - Aula 04 - Listas Estáticas

O que é uma Lista?

17:24

Uma lista é uma estrutura que armazena elementos do mesmo tipo de forma alinhada, ou seja, elementos dispostos um após o outro.

Estrutura de Dados: Aula 04 - Listas Estáticas

Page 8: Estrutura de Dados - Aula 04 - Listas Estáticas

Exemplos de Listas

17:24 8 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 9: Estrutura de Dados - Aula 04 - Listas Estáticas

Lista: exemplos

17:24

Coisas a fazer

Compras

Catálogo telefônico

Informações sobre funcionários da empresa

Notas de alunos

Itens de estoque

Cartas de baralho

etc

Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 10: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 10 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Qual propriedade é comum a todas estas listas

Page 11: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 11 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Linearidade

Page 12: Estrutura de Dados - Aula 04 - Listas Estáticas

Lista: Definição Formal

17:24

Uma lista L é uma coleção de 𝑛 elementos 𝑥1 , 𝑥2, 𝑥3 … 𝑋𝑛 , para 𝑛 ≥ 0.

Se 𝑛 > 0, então 𝑥1 é o primeiro e 𝑥𝑛 o último elemento.

Para 𝑖 = {1,2,… , 𝑛}, 𝑥𝑖 é precedido por 𝑥𝑖−1 é seguido por 𝑥𝑖+1.

Se 𝑛 é igual a 0, então a lista é vazia.

Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 13: Estrutura de Dados - Aula 04 - Listas Estáticas

Lista Estática (Consecutiva/Sequencial)

17:24

Os nós desta lista são armazenados em endereços sequenciais.

Materializada na forma de um vetor:

Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 14: Estrutura de Dados - Aula 04 - Listas Estáticas

Lista Estática (Consecutiva/Sequencial)

17:24

Alocação estática O espaço de memória é alocado no momento da compilação

Exige a definição do número máximo de elementos da Lista

Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 15: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações do TAD Lista

17:24 15 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 16: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações com Listas

17:24

As propriedades estruturadas da lista, permitem responder a questões como:

Qual é o primeiro elemento da lista?

Qual é o último elemento da lista?

Quais elementos sucedem um determinado elemento?

Quantos elementos existem na lista?

Como inserir um elemento na lista?

Como eliminar um elemento da lista?

Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 17: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações com Listas

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 18: Estrutura de Dados - Aula 04 - Listas Estáticas

Criação de uma Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

É a primeira operação a ser executada;

Aloca as variáveis necessárias para a definição da lista;

Inicializa as variáveis de controle;

Por fim, as demais operações ficam habilitadas.

Page 19: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações com Listas

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 20: Estrutura de Dados - Aula 04 - Listas Estáticas

Definindo uma Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Pode-se implementar uma lista de no máximo 𝑀𝐴𝑋 elementos, como um arranjo𝐴[1. .𝑀𝐴𝑋]. Este arranjo tem um atributo 𝑁[𝐴] que retorna o nº de elementos

Para𝑀𝐴𝑋 = 7, temos o seguinte arranjo𝐴:

Page 21: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 21 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Tamanho

Page 22: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações: Tamanho da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 23: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 23 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Como faço para saber se alista esta vazia

Page 24: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações: Tamanho da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

A lista (𝐴) está vazia!

Page 25: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 25 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Inserção

Page 26: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações: Inserção

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Inserções podem ser:

No início da lista;

No final da lista;

Em alguma posição dentro da lista.

Page 27: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações: Inserção

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 28: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações: Inserção

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 29: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações: Inserção

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Problema:

Nas estruturas contíguas é a necessário definir seu tamanho a priori, podendo levar a:

• um superdimensionamento (desperdiço de memória) ou

• um subdimensionamento (impossibilidade de inserir mais elementos).

Page 30: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 30 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Busca

Page 31: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações: Busca

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 32: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações: Busca

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 33: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 33 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

ElementoEm

Page 34: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações: ElementoEm

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Como são áreas contíguas e indexadas, basta retornar o elemento em𝐴[𝑖].

Page 35: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 35 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Remoção

Page 36: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações: Remoção

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Podemos remover um elemento em qualquer posição, no início, meio ou fim!

Precisamos manter as propriedades da lista, 𝑥𝑖+1 suceder 𝑥𝑖 .

Page 37: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações: Remoção

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Para remover um elemento com um dado índice 𝑖, movo os elementos de𝐴[𝑖 + 1. . 𝑛] para𝐴[𝑖. . 𝑛].

Page 38: Estrutura de Dados - Aula 04 - Listas Estáticas

Operações: Remoção

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 39: Estrutura de Dados - Aula 04 - Listas Estáticas

Concluindo...

17:24 39 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 40: Estrutura de Dados - Aula 04 - Listas Estáticas

Lista Estática Sequencial

17:24

Vantagens: Acesso direto indexado a qualquer elemento da lista Tempo constante para acessar o elemento 𝑖 dependerá

somente do índice.

Desvantagem: Movimentação quando eliminado/inserido elemento Definição prévia do tamanho máximo

Quando usar: Listas pequenas Inserção/remoção no fim da lista Tamanho máximo bem definido A busca é a operação mais frequente

Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 41: Estrutura de Dados - Aula 04 - Listas Estáticas

Nesta aula aprendemos... Estrutura de dados lista é uma das mais

importantes e fundamentais.

Conceito chave da lista é a linearidade, podemos falar em primeiro, segundo ....

Pode ser codificada usando estruturas contíguas e encadeadas

Estruturas contíguas o tamanho é dado a priori.

17:24 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 42: Estrutura de Dados - Aula 04 - Listas Estáticas

Material: https://sites.google.com/site/leinylsonuespi

17:24

Material baseado nas aulas de:

Estruturas de Dados, Prof.ª Roseli A. F. Romero

Listas: Conceito e estáticas, Prof: Sergio Souza Costa

Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 43: Estrutura de Dados - Aula 04 - Listas Estáticas

Na próxima aula veremos...

Listas Estáticas Sequenciais# Prática de laboratório

17:24 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 44: Estrutura de Dados - Aula 04 - Listas Estáticas

Alguma Dúvida?

17:24

Até a próxima aula...

[email protected]

Page 45: Estrutura de Dados - Aula 04 - Listas Estáticas

Prática

17:24 45 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

As aulas práticas foram baseadas no material de

Linguagem C Descomplicada , Dr. André R. Backes.

Disponível em: https://programacaodescomplicada.wordpress.com/

Page 46: Estrutura de Dados - Aula 04 - Listas Estáticas

Lista Estática Sequencial

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

ListaSequencial.h

Os protótipos das funções

O tipo de dado armazenado na lista

O ponteiro lista

Tamanho do vetor usado na lista

Page 47: Estrutura de Dados - Aula 04 - Listas Estáticas

Lista Estática Sequencial

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

ListaSequencial.c

O tipo de dados lista

Implementar as suas funções

Page 48: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 48 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Definindo a Lista

Page 49: Estrutura de Dados - Aula 04 - Listas Estáticas

Definindo a Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 50: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 50 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Criando a Lista

Page 51: Estrutura de Dados - Aula 04 - Listas Estáticas

Criando a Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 52: Estrutura de Dados - Aula 04 - Listas Estáticas

Criando a Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 53: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 53 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Destruindo a Lista

Page 54: Estrutura de Dados - Aula 04 - Listas Estáticas

Destruindo a Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 55: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 55 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Obtendo o Tamanho

Page 56: Estrutura de Dados - Aula 04 - Listas Estáticas

Obtendo o Tamanho da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 57: Estrutura de Dados - Aula 04 - Listas Estáticas

Obtendo o Tamanho da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 58: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 58 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Lista Cheia?

Page 59: Estrutura de Dados - Aula 04 - Listas Estáticas

Verificando se a Lista está Cheia

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 60: Estrutura de Dados - Aula 04 - Listas Estáticas

Verificando se a Lista está Cheia

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 61: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 61 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Lista Vazia?

Page 62: Estrutura de Dados - Aula 04 - Listas Estáticas

Verificando se a Lista está Vazia

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 63: Estrutura de Dados - Aula 04 - Listas Estáticas

Verificando se a Lista está Vazia

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 64: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 64 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Inserção na Lista

Page 65: Estrutura de Dados - Aula 04 - Listas Estáticas

Lista Estática Sequencial

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Início ->

Fim ->

Meio ->

Page 66: Estrutura de Dados - Aula 04 - Listas Estáticas

Inserindo numa Lista Vazia

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 67: Estrutura de Dados - Aula 04 - Listas Estáticas

Inserindo numa Lista Vazia

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 68: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 68 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Inserindo no Final

Page 69: Estrutura de Dados - Aula 04 - Listas Estáticas

Inserindo Elementos no Final da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 70: Estrutura de Dados - Aula 04 - Listas Estáticas

Inserindo Elementos no Final da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 71: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 71 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Inserindo no Início

Page 72: Estrutura de Dados - Aula 04 - Listas Estáticas

Inserindo Elementos no Início da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 73: Estrutura de Dados - Aula 04 - Listas Estáticas

Inserindo Elementos no Início da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 74: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 74 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Inserindo no Meio

Page 75: Estrutura de Dados - Aula 04 - Listas Estáticas

Inserindo Elementos de Forma Ordenada da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 76: Estrutura de Dados - Aula 04 - Listas Estáticas

Inserindo Elementos de Forma Ordenada da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 77: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 77 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Remoção na Lista

Page 78: Estrutura de Dados - Aula 04 - Listas Estáticas

Removendo de uma Lista Vazia

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

A remoção sempre remove um elemento específico da lista, o qual pode estar noinício, no meio ou no fim.

Cuidado: Não se pode remover de uma lista vazia!!

Page 79: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 79 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Removendo do Final

Page 80: Estrutura de Dados - Aula 04 - Listas Estáticas

Removendo Elementos do Final da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 81: Estrutura de Dados - Aula 04 - Listas Estáticas

Removendo Elementos do Final da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 82: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 82 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Removendo do Início

Page 83: Estrutura de Dados - Aula 04 - Listas Estáticas

Removendo Elementos do Início da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 84: Estrutura de Dados - Aula 04 - Listas Estáticas

Removendo Elementos do Início da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 85: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 85 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Removendo do Meio

Page 86: Estrutura de Dados - Aula 04 - Listas Estáticas

Removendo Elementos do Meio da Lista

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 87: Estrutura de Dados - Aula 04 - Listas Estáticas

17:24 87 Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Realizando Consulta na Lista Estática

Page 88: Estrutura de Dados - Aula 04 - Listas Estáticas

Realizando Consulta na Lista Estática

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Existem duas maneiras de consulta um elemento de uma lista: Pela posição: acesso direto

Pelo conteúdo: necessidade de busca

Page 89: Estrutura de Dados - Aula 04 - Listas Estáticas

Consulta pela Posição

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial

Page 90: Estrutura de Dados - Aula 04 - Listas Estáticas

Consulta pelo Conteúdo

17:24Estrutura de Dados: Aula 04 - Lista Estática Sequencial