SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Listas: Conceito e
estáticas
Prof: Sergio Souza Costa
Sobre mim
Sérgio Souza Costa
Professor - UFMA
Doutor em Computação Aplicada (INPE)
prof.sergio.costa@gmail.com

https://sites.google.com/site/profsergiocosta/home
http://www.slideshare.net/skosta/presentations?order=popular
https://twitter.com/profsergiocosta
http://gplus.to/sergiosouzacosta
Roteiro
●
●
●

Lista: Definição e tipo abstrato de dados.
Lista como estrutura de dados contígua.
Roteiro
●
●
●
●

Lista: Definição e tipo abstrato de dados.
Lista como estrutura de dados contígua.
Lista como estrutura encadeada.
Codificação de listas encadeadas em C.
Exemplos
de listas
Exemplos
de listas
Coisas a fazer

Compras
Catálogo telefônico
Qual propriedade é comum a
todas estas listas ?
Qual propriedade é comum a
todas estas listas ?

Linearidade
LISTA: DEFINIÇÃO FORMAL
Um lista L é uma coleção de n elementos x1, x2, x3
... Xn, para n >= 0.

1

Se n > 0, entao x1 é o primeiro e xn o último
elemento.

2

Para i = {1,2,...,n}, xi é precedido por xi-1 é
seguido por xi+1.

3

Se os elementos x1..xn são do mesmo tipo a lista é
denominada homogênea, caso contrário é
heterogênea.

4

Se n é igual a 0, então a lista é vazia.
LISTA: Tipo de dados abstrato
Descrevendo listas como um tipo abstrato de dados,
com 5 operações básicas.
Operação

Descrição

Tamanho (L)

Retorna o número de elementos de L

Inserir (L,x)

Insere um elemento x a L

Busca (L, x)

Busca um elemento x em L, retorna seu indice.

ElementoEm(L, i)

Retorna um elemento de L localizado em i.

Remove (L, i)

Remove um elemento de L localizado em i.
Qual a vantagem de descrever
as estruturas de dados como
tipos abstrato de dados ?
Qual a vantagem de descrever
as estruturas de dados como
tipos abstrato de dados ?
Abstrair os detalhes da
implementação,
ocultando a
representação
computacional. TAD
define a interface
apenas.
Qual a vantagem de descrever
as estruturas de dados como
tipos abstrato de dados ?
Pode então mudar a
es
Abstrair deentação
repres detalh
tação.
sobre a implemenal sem que
computacion
Ocultacliereprdaentação
o r a nte es aplicação
compuerceba”.. TAD
“p tacional
define a interface
apenas.
Como representar as listas na
memoria do computador?
Como representar as listas na
memoria do computador?
Estruturas contíguas
Estruturas Encadeadas
Como representar as listas na
memoria do computador?

Estruturas contíguas
Estruturas Encadeadas
Representação computacional na memoria
Áreas contíguas da
memoria, x2 é
adjacente a x1 e x3.

x1

x2

x3

x4

xxxx

xxxx

xxxx

xxxx

1

2

3

4

xn
...

xxx
n
Representação computacional na memoria
Áreas contíguas da
memoria, x2 é
adjacente a x1 e x3.

x1

x2

x3

x4

xxxx

xxxx

xxxx

xxxx

1

2

3

4

xn
...

xxx
n

Qual estrutura que vocês trabalham
que tem esta propriedade?
Representação computacional na memoria
Áreas contíguas da
memoria, x2 é
adjacente a x1 e x3.

x1

x2

x3

x4

xxxx

xxxx

xxxx

xxxx

1

2

3

4

xn
...

xxx
n

Qual estrutura que vocês trabalham
que tem esta propriedade?
Os arranjos, também conhecido como
vetores.
Definição
Pode-se implementar uma lista de no máximo MAX elementos, como um
arranjo A[1..MAX]. Este arranjo tem um atributo N[A] que retorna a
quantidade de elementos.
Para MAX=7, temos o seguinte arranjo A:
Definição
Pode-se implementar uma lista de no máximo MAX elementos, como um
arranjo A[1..MAX]. Este arranjo tem um atributo N[A] que retorna a
quantidade de elementos.
Para MAX=7, temos o seguinte arranjo A:

Observem que
vamos empregar
a notação similar
ao do clássico
livro (Cormen)
Operações: Tamanho

Tamanho ( A)
1.
retorna N[A]

1
A

15

2
6

3
2

4
9

N[A] = 4

5

6

7
Operações: Tamanho

Tamanho ( A)
1.
retorna N[A]

1
A

15

2
6

3
2

4

5

6

7

9

N[A] = 4

Como faço para saber se a lista esta
vazia ?
Operações: Tamanho

Tamanho ( A)
1.
retorna N[A]

1
A

15

2
6

3
2

4

5

6

7

9

N[A] = 4

Como faço para saber se a lista esta
vazia ?
Se Tamanho (A) = 0 então
faço algo
Operações: Inserção

1

Inserir( A, x)
1.
Se N[A] < MAX então
2.
N[A] <- N[A] + 1
3.
A[N[A]] <- x
4.
se não
5.
erro (“lista cheia”);

A

15

2
6

3
2

4

5

6

7

5

6

7

9

N[A] = 4

Inserir ( A, 20)
1
A

15

2
6

3
2

4
9

20

N[A] = 5
Problema:
Nas estruturas contíguas é a necessário definir o
seu tamanho a priori, podendo levar a:
●

●

um superdimensionamento (desperdiço de
mémoria) ou
um subdimensionamento (impossibilidade de
inserir mais elementos).
Operações: Busca

1

Busca ( A, x)
1.
para i <- 1 ate N[A] faça
2.
se A[i] = x então
3.
retorna i
4.
fim se
5.
fim para
6.
retorna 0

A

15

2
6

3
2

4
9

5

6

7

20

Busca ( A, 2)
1
A

15

2
6

3
2

Explorados

4
9

5

6

7

20

Não explorados
Operações: Busca

1

Busca ( A, x)
1.
para i <- 1 ate N[A] faça
2.
se A[i] = x então
3.
retorna i
4.
fim se
5.
fim para
6.
retorna 0

Essa busca é conhecida
como linear ou
sequencial, vocês
aprenderam outras
abordagens.

A

15

2
6

3
2

4
9

5

6

7

20

Busca ( A, 2)
1
A

15

2
6

3
2

Explorados

4
9

5

6

7

20

Não explorados
Operações: ElementoEm

Como são áreas contíguas e indexadas, basta
retornar o elemento em A[i].
1

ElementoEm( A, i)
1.
retorna A[i]

A

15

2
6

ElementoEm(A, 4)

3
2

4
9

5
20

9

6

7
E a remoção ?
E a remoção ?

Lembre que posso querer remover um
elemento em qualquer posição, no inicio,
meio ou fim.
E a remoção ?

Lembre que posso querer remover um
elemento em qualquer posição, no inicio,
meio ou fim.
Precisamos manter as propriedades da lista,
xi+1 suceder xi.
Operações: Remover
Remove um elemento com um dado índice i.
Movo os elemento de A[i+1..n] para A[i..
n].

1
A

15

2
6

3
2

4
9

5

6

7

20

N[A] = 5

Remover( A, k)
1.
para i <- k até N[A]-1 faça
2.
A[i] = A[i+1]
3.
fim para
4.
N[A] = N[A] - 1
5.
retorna 0

Remover ( A, 3)

1
A

15

2
6

3
9

4

5

20

20

N[A] = 4

6

7
Pontos chaves
●

●

●

●

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.
Listas:  conceito e estáticas

Mais conteúdo relacionado

Mais procurados

ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - LIMITE DE DUAS VARI...
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - LIMITE DE DUAS VARI...ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - LIMITE DE DUAS VARI...
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - LIMITE DE DUAS VARI...Antonio Claudio Lage Buffara
 
Regra do produto com três funções polinomaisi
Regra do produto com três funções polinomaisiRegra do produto com três funções polinomaisi
Regra do produto com três funções polinomaisiVinicius Loiola Beserra
 
Aula Sobre Coordenadas Cartesianas
Aula Sobre Coordenadas CartesianasAula Sobre Coordenadas Cartesianas
Aula Sobre Coordenadas CartesianasAntonio Carneiro
 
21 aula graficos de funcoes reais
21 aula   graficos de funcoes reais21 aula   graficos de funcoes reais
21 aula graficos de funcoes reaisjatobaesem
 
Funcao do-primeiro-grau
Funcao do-primeiro-grauFuncao do-primeiro-grau
Funcao do-primeiro-graucon_seguir
 
Gráfico de uma função
Gráfico de uma funçãoGráfico de uma função
Gráfico de uma funçãoHelena Borralho
 
20 aula funcoes-formalizacao
20 aula   funcoes-formalizacao20 aula   funcoes-formalizacao
20 aula funcoes-formalizacaojatobaesem
 
Exercicios e problemas do 2º gra ucecam
Exercicios e problemas do 2º gra ucecamExercicios e problemas do 2º gra ucecam
Exercicios e problemas do 2º gra ucecamMichele Boulanger
 
Gráficos de função quadrática no microsoft ecxel
Gráficos de função quadrática no microsoft ecxelGráficos de função quadrática no microsoft ecxel
Gráficos de função quadrática no microsoft ecxelTuesla Santos
 
18 aula plano cartesiano
18 aula   plano cartesiano18 aula   plano cartesiano
18 aula plano cartesianojatobaesem
 
Estrutura de Dados - Aula 07
Estrutura de Dados - Aula 07Estrutura de Dados - Aula 07
Estrutura de Dados - Aula 07thomasdacosta
 
Lista de exercícios funções reais de uma variável real
Lista de exercícios   funções reais de uma variável realLista de exercícios   funções reais de uma variável real
Lista de exercícios funções reais de uma variável realAna Lidia dos Santos
 
Funcoes primeiro ano
Funcoes  primeiro anoFuncoes  primeiro ano
Funcoes primeiro anoISJ
 

Mais procurados (19)

Aula 1
Aula 1Aula 1
Aula 1
 
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - LIMITE DE DUAS VARI...
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - LIMITE DE DUAS VARI...ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - LIMITE DE DUAS VARI...
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - LIMITE DE DUAS VARI...
 
Regra do produto com três funções polinomaisi
Regra do produto com três funções polinomaisiRegra do produto com três funções polinomaisi
Regra do produto com três funções polinomaisi
 
Aula Sobre Coordenadas Cartesianas
Aula Sobre Coordenadas CartesianasAula Sobre Coordenadas Cartesianas
Aula Sobre Coordenadas Cartesianas
 
21 aula graficos de funcoes reais
21 aula   graficos de funcoes reais21 aula   graficos de funcoes reais
21 aula graficos de funcoes reais
 
Funcao do-primeiro-grau
Funcao do-primeiro-grauFuncao do-primeiro-grau
Funcao do-primeiro-grau
 
Gráfico de uma função
Gráfico de uma funçãoGráfico de uma função
Gráfico de uma função
 
20 aula funcoes-formalizacao
20 aula   funcoes-formalizacao20 aula   funcoes-formalizacao
20 aula funcoes-formalizacao
 
Exercicios e problemas do 2º gra ucecam
Exercicios e problemas do 2º gra ucecamExercicios e problemas do 2º gra ucecam
Exercicios e problemas do 2º gra ucecam
 
Gráficos de função quadrática no microsoft ecxel
Gráficos de função quadrática no microsoft ecxelGráficos de função quadrática no microsoft ecxel
Gráficos de função quadrática no microsoft ecxel
 
Gabarito lista4
Gabarito lista4Gabarito lista4
Gabarito lista4
 
Bissecao Calculo Numerico
Bissecao Calculo Numerico Bissecao Calculo Numerico
Bissecao Calculo Numerico
 
18 aula plano cartesiano
18 aula   plano cartesiano18 aula   plano cartesiano
18 aula plano cartesiano
 
Coordenadas cartesianas
Coordenadas cartesianasCoordenadas cartesianas
Coordenadas cartesianas
 
Funçoes modulares
Funçoes modularesFunçoes modulares
Funçoes modulares
 
Fun quadr mariags
Fun quadr mariagsFun quadr mariags
Fun quadr mariags
 
Estrutura de Dados - Aula 07
Estrutura de Dados - Aula 07Estrutura de Dados - Aula 07
Estrutura de Dados - Aula 07
 
Lista de exercícios funções reais de uma variável real
Lista de exercícios   funções reais de uma variável realLista de exercícios   funções reais de uma variável real
Lista de exercícios funções reais de uma variável real
 
Funcoes primeiro ano
Funcoes  primeiro anoFuncoes  primeiro ano
Funcoes primeiro ano
 

Semelhante a Listas: conceito e estáticas

Algoritmo e Estrutura de dados em C - Aula 01 - 2019
Algoritmo e Estrutura de dados em C - Aula 01 - 2019Algoritmo e Estrutura de dados em C - Aula 01 - 2019
Algoritmo e Estrutura de dados em C - Aula 01 - 2019Eduardo S. Pereira
 
Aula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrõesAula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrõesDalton Martins
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonDiogo Gomes
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em PrologNatã Melo
 
Aprendizagem Supervisionada I
Aprendizagem Supervisionada IAprendizagem Supervisionada I
Aprendizagem Supervisionada ILuís Nunes
 
Functional programming feat. Swift (Portuguese)
Functional programming feat. Swift (Portuguese)Functional programming feat. Swift (Portuguese)
Functional programming feat. Swift (Portuguese)FrankKair1
 
Algoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizesAlgoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizesRADILSON RIPARDO DE FRETIAS
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcionalPéricles Miranda
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçaossuserc6132d
 
15 algoritmos de busca em tabelas - sequencial e binaria
15   algoritmos de busca em tabelas - sequencial e binaria15   algoritmos de busca em tabelas - sequencial e binaria
15 algoritmos de busca em tabelas - sequencial e binariaRicardo Bolanho
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática ComputacionalRicardo Terra
 
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroiMasters
 
Web Data Mining em R: agrupamento de mensagens do twitter
Web Data Mining em R: agrupamento de mensagens do twitterWeb Data Mining em R: agrupamento de mensagens do twitter
Web Data Mining em R: agrupamento de mensagens do twitterFabrício Barth
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareFelipe
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAyrton Yagami
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaLeinylson Fontinele
 

Semelhante a Listas: conceito e estáticas (20)

Algoritmo e Estrutura de dados em C - Aula 01 - 2019
Algoritmo e Estrutura de dados em C - Aula 01 - 2019Algoritmo e Estrutura de dados em C - Aula 01 - 2019
Algoritmo e Estrutura de dados em C - Aula 01 - 2019
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
R para Iniciantes
R para IniciantesR para Iniciantes
R para Iniciantes
 
Aula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrõesAula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrões
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em Prolog
 
Aprendizagem Supervisionada I
Aprendizagem Supervisionada IAprendizagem Supervisionada I
Aprendizagem Supervisionada I
 
Functional programming feat. Swift (Portuguese)
Functional programming feat. Swift (Portuguese)Functional programming feat. Swift (Portuguese)
Functional programming feat. Swift (Portuguese)
 
Algoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizesAlgoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizes
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcional
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçao
 
15 algoritmos de busca em tabelas - sequencial e binaria
15   algoritmos de busca em tabelas - sequencial e binaria15   algoritmos de busca em tabelas - sequencial e binaria
15 algoritmos de busca em tabelas - sequencial e binaria
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática Computacional
 
Introdução ao paradigma funcional com scala
Introdução ao paradigma funcional com scalaIntrodução ao paradigma funcional com scala
Introdução ao paradigma funcional com scala
 
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
 
Web Data Mining em R: agrupamento de mensagens do twitter
Web Data Mining em R: agrupamento de mensagens do twitterWeb Data Mining em R: agrupamento de mensagens do twitter
Web Data Mining em R: agrupamento de mensagens do twitter
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton Yagami
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na prática
 

Mais de Sérgio Souza Costa

Expressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasExpressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasSérgio Souza Costa
 
De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computadorSérgio Souza Costa
 
Introdução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosIntrodução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosSérgio Souza Costa
 
Minicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosMinicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosSérgio Souza Costa
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoSérgio Souza Costa
 
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemBanco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemSérgio Souza Costa
 
Banco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaBanco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaSérgio Souza Costa
 
Linguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoLinguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoSérgio Souza Costa
 
Gödel’s incompleteness theorems
Gödel’s incompleteness theoremsGödel’s incompleteness theorems
Gödel’s incompleteness theoremsSérgio Souza Costa
 
DBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsDBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsSérgio Souza Costa
 
Conceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosConceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosSérgio Souza Costa
 
Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Sérgio Souza Costa
 
Relações (composição e agregação)
Relações (composição e agregação)Relações (composição e agregação)
Relações (composição e agregação)Sérgio Souza Costa
 

Mais de Sérgio Souza Costa (20)

Expressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasExpressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicas
 
De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computador
 
Introdução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosIntrodução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmos
 
Minicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosMinicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficos
 
Modelagem de dados geográficos
Modelagem de dados geográficosModelagem de dados geográficos
Modelagem de dados geográficos
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de Encerramento
 
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemBanco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
 
Banco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaBanco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de abertura
 
Linguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoLinguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - Introdução
 
Gödel’s incompleteness theorems
Gödel’s incompleteness theoremsGödel’s incompleteness theorems
Gödel’s incompleteness theorems
 
Turing e o problema da decisão
Turing e o problema da decisãoTuring e o problema da decisão
Turing e o problema da decisão
 
DBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsDBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cells
 
Conceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosConceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetos
 
Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)
 
Herança e Encapsulamento
Herança e EncapsulamentoHerança e Encapsulamento
Herança e Encapsulamento
 
Relações (composição e agregação)
Relações (composição e agregação)Relações (composição e agregação)
Relações (composição e agregação)
 
Abstract classes and interfaces
Abstract classes and interfacesAbstract classes and interfaces
Abstract classes and interfaces
 
Introdução ao Prolog
Introdução ao PrologIntrodução ao Prolog
Introdução ao Prolog
 
Heap - Python
Heap - PythonHeap - Python
Heap - Python
 
Paradigma lógico
Paradigma lógicoParadigma lógico
Paradigma lógico
 

Listas: conceito e estáticas

  • 2. Sobre mim Sérgio Souza Costa Professor - UFMA Doutor em Computação Aplicada (INPE) prof.sergio.costa@gmail.com https://sites.google.com/site/profsergiocosta/home http://www.slideshare.net/skosta/presentations?order=popular https://twitter.com/profsergiocosta http://gplus.to/sergiosouzacosta
  • 3. Roteiro ● ● ● Lista: Definição e tipo abstrato de dados. Lista como estrutura de dados contígua.
  • 4. Roteiro ● ● ● ● Lista: Definição e tipo abstrato de dados. Lista como estrutura de dados contígua. Lista como estrutura encadeada. Codificação de listas encadeadas em C.
  • 6. Exemplos de listas Coisas a fazer Compras Catálogo telefônico
  • 7. Qual propriedade é comum a todas estas listas ?
  • 8. Qual propriedade é comum a todas estas listas ? Linearidade
  • 9. LISTA: DEFINIÇÃO FORMAL Um lista L é uma coleção de n elementos x1, x2, x3 ... Xn, para n >= 0. 1 Se n > 0, entao x1 é o primeiro e xn o último elemento. 2 Para i = {1,2,...,n}, xi é precedido por xi-1 é seguido por xi+1. 3 Se os elementos x1..xn são do mesmo tipo a lista é denominada homogênea, caso contrário é heterogênea. 4 Se n é igual a 0, então a lista é vazia.
  • 10. LISTA: Tipo de dados abstrato Descrevendo listas como um tipo abstrato de dados, com 5 operações básicas. Operação Descrição Tamanho (L) Retorna o número de elementos de L Inserir (L,x) Insere um elemento x a L Busca (L, x) Busca um elemento x em L, retorna seu indice. ElementoEm(L, i) Retorna um elemento de L localizado em i. Remove (L, i) Remove um elemento de L localizado em i.
  • 11. Qual a vantagem de descrever as estruturas de dados como tipos abstrato de dados ?
  • 12. Qual a vantagem de descrever as estruturas de dados como tipos abstrato de dados ? Abstrair os detalhes da implementação, ocultando a representação computacional. TAD define a interface apenas.
  • 13. Qual a vantagem de descrever as estruturas de dados como tipos abstrato de dados ? Pode então mudar a es Abstrair deentação repres detalh tação. sobre a implemenal sem que computacion Ocultacliereprdaentação o r a nte es aplicação compuerceba”.. TAD “p tacional define a interface apenas.
  • 14. Como representar as listas na memoria do computador?
  • 15. Como representar as listas na memoria do computador? Estruturas contíguas Estruturas Encadeadas
  • 16. Como representar as listas na memoria do computador? Estruturas contíguas Estruturas Encadeadas
  • 17. Representação computacional na memoria Áreas contíguas da memoria, x2 é adjacente a x1 e x3. x1 x2 x3 x4 xxxx xxxx xxxx xxxx 1 2 3 4 xn ... xxx n
  • 18. Representação computacional na memoria Áreas contíguas da memoria, x2 é adjacente a x1 e x3. x1 x2 x3 x4 xxxx xxxx xxxx xxxx 1 2 3 4 xn ... xxx n Qual estrutura que vocês trabalham que tem esta propriedade?
  • 19. Representação computacional na memoria Áreas contíguas da memoria, x2 é adjacente a x1 e x3. x1 x2 x3 x4 xxxx xxxx xxxx xxxx 1 2 3 4 xn ... xxx n Qual estrutura que vocês trabalham que tem esta propriedade? Os arranjos, também conhecido como vetores.
  • 20. Definição Pode-se implementar uma lista de no máximo MAX elementos, como um arranjo A[1..MAX]. Este arranjo tem um atributo N[A] que retorna a quantidade de elementos. Para MAX=7, temos o seguinte arranjo A:
  • 21. Definição Pode-se implementar uma lista de no máximo MAX elementos, como um arranjo A[1..MAX]. Este arranjo tem um atributo N[A] que retorna a quantidade de elementos. Para MAX=7, temos o seguinte arranjo A: Observem que vamos empregar a notação similar ao do clássico livro (Cormen)
  • 22. Operações: Tamanho Tamanho ( A) 1. retorna N[A] 1 A 15 2 6 3 2 4 9 N[A] = 4 5 6 7
  • 23. Operações: Tamanho Tamanho ( A) 1. retorna N[A] 1 A 15 2 6 3 2 4 5 6 7 9 N[A] = 4 Como faço para saber se a lista esta vazia ?
  • 24. Operações: Tamanho Tamanho ( A) 1. retorna N[A] 1 A 15 2 6 3 2 4 5 6 7 9 N[A] = 4 Como faço para saber se a lista esta vazia ? Se Tamanho (A) = 0 então faço algo
  • 25. Operações: Inserção 1 Inserir( A, x) 1. Se N[A] < MAX então 2. N[A] <- N[A] + 1 3. A[N[A]] <- x 4. se não 5. erro (“lista cheia”); A 15 2 6 3 2 4 5 6 7 5 6 7 9 N[A] = 4 Inserir ( A, 20) 1 A 15 2 6 3 2 4 9 20 N[A] = 5
  • 26. Problema: Nas estruturas contíguas é a necessário definir o seu tamanho a priori, podendo levar a: ● ● um superdimensionamento (desperdiço de mémoria) ou um subdimensionamento (impossibilidade de inserir mais elementos).
  • 27. Operações: Busca 1 Busca ( A, x) 1. para i <- 1 ate N[A] faça 2. se A[i] = x então 3. retorna i 4. fim se 5. fim para 6. retorna 0 A 15 2 6 3 2 4 9 5 6 7 20 Busca ( A, 2) 1 A 15 2 6 3 2 Explorados 4 9 5 6 7 20 Não explorados
  • 28. Operações: Busca 1 Busca ( A, x) 1. para i <- 1 ate N[A] faça 2. se A[i] = x então 3. retorna i 4. fim se 5. fim para 6. retorna 0 Essa busca é conhecida como linear ou sequencial, vocês aprenderam outras abordagens. A 15 2 6 3 2 4 9 5 6 7 20 Busca ( A, 2) 1 A 15 2 6 3 2 Explorados 4 9 5 6 7 20 Não explorados
  • 29. Operações: ElementoEm Como são áreas contíguas e indexadas, basta retornar o elemento em A[i]. 1 ElementoEm( A, i) 1. retorna A[i] A 15 2 6 ElementoEm(A, 4) 3 2 4 9 5 20 9 6 7
  • 31. E a remoção ? Lembre que posso querer remover um elemento em qualquer posição, no inicio, meio ou fim.
  • 32. E a remoção ? Lembre que posso querer remover um elemento em qualquer posição, no inicio, meio ou fim. Precisamos manter as propriedades da lista, xi+1 suceder xi.
  • 33. Operações: Remover Remove um elemento com um dado índice i. Movo os elemento de A[i+1..n] para A[i.. n]. 1 A 15 2 6 3 2 4 9 5 6 7 20 N[A] = 5 Remover( A, k) 1. para i <- k até N[A]-1 faça 2. A[i] = A[i+1] 3. fim para 4. N[A] = N[A] - 1 5. retorna 0 Remover ( A, 3) 1 A 15 2 6 3 9 4 5 20 20 N[A] = 4 6 7
  • 34. Pontos chaves ● ● ● ● 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.