INSTITUTO FEDERAL DE EDUCAÇÃO,
EDUCAÇÃO
CIÊNCIA E TECNOLOGIA DO RIO
GRANDE DO NORTE
ESTRUTURA DE DADOS
Docente: Éberton
É
da Silva Marinho
e-mail: [email protected]
[email protected]
Curso de Tecnologia em Sistemas para Internet
26/01/2014
SUMÁRIO
|
Estruturas de dados fundamentais
Vetores
y Matrizes
M t i
y Listas encadeadas
y
ESTRUTURAS DE DADOS
FUNDAMENTAIS
VETORES (ARRAYS)
Um vetor em Java é um objeto que contém uma
coleção de objetos, todos do mesmo tipo
| Os
O elementos
l
t de
d um vetor
t são
ã acessados
d por meio
i
de índices de valor inteiro, variando de 0 a n-1
|
y
int [] a = new int[6];
A quantidade de elementos de um vetor em Java
pode ser acesso pela propriedade length
| Uma vez alocado,, o tamanho do vetor não pode
p
ser alterado
| O tempo
p de acesso a um elemento do vetor é da
ordem O(1)
|
ESTENDENDO OS VETORES JAVA
ESTENDENDO OS VETORES JAVA
T(n) = O(n)
ESTENDENDO OS VETORES JAVA
ESTENDENDO OS VETORES JAVA
ESTENDENDO OS VETORES JAVA
T(n) = O(m)
VETORES MULTIDIMENSIONAIS
|
Um vetor bidimensional pode ser declarado da
seguinte forma:
y
|
E acessado da seguinte forma:
y
|
|
i t [][] x = new int[3][5];
int
i t[3][5]
int a = x[2][3];
Um vetor bidimensional em Java é representado
como vetores de vetores
Exercício:
y
Modifique a classe Array e crie uma
BidimensionalArray que armazena os inteiros em um
vetor unidimensional
MATRIZES
MULTIPLICAÇÃO DE MATRIZES
|
Exemplo
MULTIPLICAÇÃO DE MATRIZES
•Qual
Q l o tempo
t
computacional
t i
l
deste algoritmo?
Para
A[m][n] e B[n][p],
e co
considerando
s e a o
que as matrizes
são quadradas,
T(n) = O(n3)
MULTIPLICAÇÃO DE MATRIZES
Há alguma implementação de um algoritmo que
tenha um tempo computacional melhor?
| Dê um exemplo
l de
d implementação
i l
t ã e diga
di quall o
tempo computacional deste implementação.
| Qual o nome da técnica utilizada?
|
PROBLEMAS DOS VETORES
Um vetor em Java é um objeto que contém uma
coleção de objetos, todos do mesmo tipo
| Maneira
M
i rápida
á id de
d criar
i uma sequência
ê i de
d
elementos do mesmo tipo na memória
| Uma vez alocado,
alocado o tamanho do vetor não pode
ser alterado
| Se não tivermos como mensurar a priori a
quantidade de elementos que vamos utilizar,
pode haver desperdício
p
p
espaço,
p ç , ou necessitamos
de espaço extra para armazenar mais elementos
|
LISTAS SIMPLES ENCADEADAS
Sequência de objetos alocados dinamicamente,
cada qual fazendo referência ao seu sucessor na
lista.
lista
| O tamanho da lista pode ser redimensionado a
qualquer instante
| Gasta espaço necessário para armazenar a lista,
sem desperdício
| O tempo para criar cada elemento da lista é
oneroso
|
LISTAS ENCADEADAS
|
Há diversas implementações de listas
encadeadas. Algumas seguem abaixo:
LISTAS SIMPLES ENCADEADAS
Nesta implementação temos uma cabeça (head)
que aponta para o primeiro elemento da lista
| Cada
C d elemento
l
t d
da li
lista
t aponta
t para o próximo
ó i
elemento
| O último elemento aponta para uma referência
nula
| Adicionar elementos no início da lista é fácil,
fácil
porém, para adicionar elementos no final tempos
que p
q
percorrer toda a lista
|
LISTAS SIMPLES ENCADEADAS
Nesta implementação temos uma cabeça (head)
que aponta para o primeiro elemento da lista
| Também
T bé ttemos uma cauda
d (tail)
(t il)
| Cada elemento da lista aponta para o próximo
elemento
| O último elemento aponta para uma referência
nula
| Adicionar elementos no início ou fim da lista é
fácil
|
LISTAS SIMPLES ENCADEADAS
Nesta implementação temos uma cabeça (head)
que aponta para o primeiro elemento da lista
| Cada
C d elemento
l
t d
da li
lista
t aponta
t para o próximo
ó i
elemento
| O último elemento aponta para o elemento
sentinela
| Adicionar elementos no início da lista é fácil
| Também chamada de lista circular
|
LISTAS SIMPLES ENCADEADAS
Nesta implementação temos uma cauda (tail) que
aponta para o último elemento da lista
| Cada
C d elemento
l
t d
da li
lista
t aponta
t para o próximo
ó i
elemento
| O último elemento aponta para o primeiro
| Adicionar elementos no início ou fim da lista é
fácil
| Também chamada de lista circular
|
EXERCÍCIO
|
Implemente uma das listas encadeadas com o
nome LinkedList, que possua os métodos para:
Adicionar
Adi
i
elementos
l
t a li
lista
t encadeada
d d
y Retirar elementos da lista encadeada
y Imprimir os elementos da lista encadeada
y
|
Após, faça um programa que utilize esta lista e
adicione os elementos: 3,, 1,, 5,, 7,, 10,, 20,, 4,, 1,, 5,, 6,,
1, 50. Depois retire os elementos: 1, 20, 30, 2, 4, 9.
Qual será o resultado impresso quando
chamarmos o método para imprimir os elementos
da nossa lista encadeada?
DÚVIDAS
|
e-mail:
[email protected]
[email protected]
Endereço eletrônico da disciplina:
| http://docente.ifrn.edu.br/ebertonmarinho
|
23
Download

Estruturas de dados fundamentais - Docentes