Introdução a estruturas de
dados
Prof. Júlio César Andrade
Relembrando…
Vetores
3
● Os vetores são estrutura de dados
unidimensionais, pois possuem apenas
uma linha ou uma coluna;
● Os vetores também podem ser
considerados como estrutura de dados
lineares, pois crescem em uma dimensão;
● A característica de armazenamento
contíguo facilita muito na busca de dados,
entregando quase que acesso instantâneo
ao dado;
● Cálculo de endereçamento mais simples.
endereço valor
1000
25.0
1001
1002
1003
1004
23.5
1005
1006
1007
memória
Matrizes
As matrizes são estrutura de dados
homogêneas e estáticas, tendo como principais
características:
○ um único identificador;
○ todas as posições são do mesmo
tipo de dados;
○ tamanho fixo;
○ armazenamento sequencial
○ dados acessíveis a partir de índices
○ diversas dimensões
4
0 1 2
0 25 23 33
1 18 21 38
2 29 12 40
colunas
linhas
Transformando matriz em vetor
5
0 1 2
0 25 23 33
1 18 21 38
2 29 12 40
notas
25 23 33
18 21 38
29 12 40
3 linhas
3 colunas
6
0,0 0,1 0,2 1,0 1,1 1,2 2,0 2,1 2,2
25 23 33 18 21 38 29 12 40
1 linhas
9 colunas
Matrizes: armazenamento na memória
Ordem de Linha (Row-Major Order): Os
elementos são armazenados linha por linha.
Primeiro, todos os elementos da primeira linha
são armazenados, depois todos os elementos
da segunda linha, e assim por diante.
Ordem de Coluna (Column-Major Order): Os
elementos são armazenados coluna por coluna.
Primeiro, todos os elementos da primeira coluna
são armazenados, depois todos os elementos
da segunda coluna, e assim por diante.
7
endereço valor
1000
25
1001
1002
1003
1004
23
1005
1006
1007
1008
33
1009
1010
1011
endereço valor
1012
18
1013
1014
1015
1016
21
1017
1018
1019
1020
38
1021
1022
1023
endereço valor
1024
29
1025
1026
1027
1028
12
1029
1030
1031
1032
40
1033
1034
1035
Introdução a arrays
9
Array é um termo mais amplo que pode se
referir a estruturas de dados lineares com
uma ou mais dimensões. Um array
unidimensional é equivalente a um vetor,
enquanto arrays multidimensionais
representam matrizes.
Arrays
10
Outras estruturas de dados como pilhas e filhas são derivadas dos arrays.
Arrays
11
Agora, temos os dois tipos de arrays:
● Arrays unidimensionais (como o mostrado anteriormente)
● Arrays multidimensionais (arrays dentro de arrays)
Arrays unidimensionais
12
Arrays unidimensionais em Java são estruturas de dados que armazenam elementos
do mesmo tipo em uma única linha
Arrays multidimensionais
13
Arrays multidimensionais, por outro lado, são arrays que contêm outros arrays como elementos. Os
arrays multidimensionais podem ser bidimensionais, tridimensionais ou ter mais dimensões.
Operações básicas com arrays
14
Insert (inserir) — Insere um elemento em um determinado índice;
Get (receber) — Retorna um elemento em um determinado índice;
Delete (excluir) — Remove um elemento em um determinado índice;
Size (tamanho) — Obtém o número total de elementos de um array.
Contain (contém) — Verifica se um elemento está na lista.
Operações básicas com arrays
15
Tipo de objeto armazenado na lista
Operações básicas com arrays
16
Estrutura básica da nossa classe que armazena alunos:
Operações básicas com arrays
17
Insert (inserir) — Insere um elemento em um determinado índice;
Operações básicas com arrays
18
Insert (inserir) — Insere um elemento em um determinado índice;
Operações básicas com arrays
19
Insert (inserir) — Insere um elemento em um determinado índice;
Operações básicas com arrays
20
Get (receber) — Retorna um elemento em um determinado índice;
Operações básicas com arrays
21
Get (receber) — Retorna um elemento em um determinado índice;
Operações básicas com arrays
22
Delete (excluir) — Remove um elemento em um determinado índice;
Operações básicas com arrays
23
Size (tamanho) — Obtém o número total de elementos de um array.
Operações básicas com arrays
24
Contain (contém) — Verifica se um elemento está na lista.
Usaremos o método equals para verificar.
Operações básicas com arrays
25
Contain (contém) — Verifica se um elemento está na lista.
Dúvida comum
26
E se o meu array encher?
Aumentado o espaço de armazenamento
Em Java não conseguimos mudar o
tamanho de um array, então teremos
que criar um novo maior e copiar tudo
que está no antigo para este.
27
Aumentado o espaço de armazenamento
28
ArrayList
Arrays são estruturas nativas da linguagem Java,
projetadas para armazenar um número fixo de
elementos do mesmo tipo. Eles são eficientes em
termos de acesso direto aos elementos através
de índices numéricos, mas sua natureza estática
pode ser limitante em situações onde o tamanho
da coleção precisa ser alterado dinamicamente.
29
ArrayList
● ArrayList é uma classe da biblioteca padrão
do Java.
● Oferece uma implementação mais flexível de
um array.
● Permite armazenar objetos de qualquer tipo.
● Possui a capacidade de redimensionar
automaticamente sua capacidade conforme
elementos são adicionados ou removidos.
30
Exemplo
Array Nativo:
int[] array = new int[10];
int[] array = {1, 2, 3, 4, 5};
ArrayList:
ArrayList<Integer> arrayList = new ArrayList<>();
31
ArrayList
Criando um ArrayList:
32
ArrayList
add(E elemento): Adiciona um elemento ao final da lista.
33
ArrayList
get(int indice): Retorna o elemento no índice especificado.
34
ArrayList
remove(int índice): Remove o elemento no índice especificado.
35
ArrayList
size(): Retorna o número de elementos na lista.
36
ArrayList
isEmpty(): Retorna verdadeiro se a lista estiver vazia.
37
ArrayList
contains(Object elemento): Retorna verdadeiro se a lista contiver o elemento
especificado.
38
ArrayList
clear(): Remove todos os elementos da lista.
39
ArrayList
indexOf(Object elemento): Retorna o índice da primeira ocorrência do elemento
especificado, ou -1 se a lista não contiver o elemento.
40
ArrayList
toArray(): Converte a lista para um array.
41
Pilhas
Conceito:
Uma pilha é uma estrutura de
dados linear que segue o
princípio LIFO (Last In, First
Out), ou seja, o último elemento
a ser inserido é o primeiro a ser
removido.
43
stack
topo
push
pop
Operações Principais
Push: Insere um novo elemento no topo da pilha.
Pop: Remove e retorna o elemento do topo da pilha.
Peek (ou Top): Retorna o elemento do topo da pilha sem removê-lo.
IsEmpty: Verifica se a pilha está vazia.
44
45
Criando pilhas em Java
46
Pilhas (Stacks)
47
A classe Stack em Java fornece
vários métodos para manipular pilhas.
Aqui estão alguns dos principais
métodos.
Pilhas (Stacks)
48
push(E elemento): Adiciona um elemento ao topo da pilha.
Pilhas (Stacks)
49
pop(): Remove e retorna o elemento no topo da pilha.
Pilhas (Stacks)
50
peek(): Retorna o elemento no topo da pilha sem removê-lo.
Pilhas (Stacks)
51
empty(): Retorna verdadeiro se a pilha estiver vazia.
Pilhas (Stacks)
52
search(Object elemento): Retorna a posição relativa do elemento na pilha,
sendo 1 se estiver no topo. Retorna -1 se o elemento não estiver na pilha.
Filas
Filas (Queues)
Similares às pilhas, as filas são uma outra
estrutura de dados linear que armazena
elementos de forma sequencial.
A única diferença significativa entre pilhas e
filas é que, em vez de usar o método LIFO, as
filas usam a lógica FIFO (First in, First Out).
54
Operações Principais
Enqueue (ou Enfileirar): Insere um novo elemento no final da fila.
Dequeue (ou Desenfileirar): Remove e retorna o elemento do início da fila.
Peek (ou Front): Retorna o elemento do início da fila sem removê-lo.
IsEmpty: Verifica se a fila está vazia.
55
56
Filas (Queues)
Para implementar uma fila em Java, você
pode usar a interface Queue juntamente com
uma classe que a implemente.
57
Filas (Queues)
Neste exemplo, usaremos a implementação
LinkedList, que é uma classe que implementa
tanto List quanto Queue em Java.
58
59
Imports utilizados
import java.util.LinkedList: Importando a classe LinkedList do pacote java.util.
Isso é feito para que possamos usar LinkedList para implementar a fila. LinkedList
é uma implementação de lista duplamente encadeada em Java.
import java.util.Queue: Importando a interface Queue do pacote java.util.
Essa interface define métodos como add, poll, peek, entre outros, que são
comuns a estruturas de fila.
60
Referências
VETORAZZO, Adriana de Souza et al. Estrutura de dados. Porto Alegre:
SAGAH, 2018. ISBN 978-85-9502-393-2.
61
Obrigado! Até a próxima aula.
62
Obrigado!

Introdução a estruturas de dados com java