Você está na página 1de 20

Algoritmos e

Estruturas de Dados
Sistemas de Informação
3º período

Aulas 16 e 17 – 24/05/2023
Prof. Anderson L. A. Vilaça

188

Algoritmos e Estruturas de Dados - AED


Assuntos desta Aula

• Implementação de Lista Encadeada Simples - Continuação

• Pilhas

• Filas

• Árvores

• Grafos

189

1
Algoritmos e Estruturas de Dados - AED
Implementação do Programa de Lista Encadeada Simples

190

Algoritmos e Estruturas de Dados - AED


Implementação do Programa de Lista Encadeada Simples

191

2
Algoritmos e Estruturas de Dados - AED
Implementação do Programa de Lista Encadeada Simples

192

Algoritmos e Estruturas de Dados - AED


Implementação do Programa de Lista Encadeada Simples

193

3
Algoritmos e Estruturas de Dados - AED
Implementação do Programa de Lista Encadeada Simples

194

Algoritmos e Estruturas de Dados - AED


Implementação do Programa de Lista Encadeada Simples

195

4
Algoritmos e Estruturas de Dados - AED
Implementação do Programa de Lista Encadeada Simples

196

Algoritmos e Estruturas de Dados - AED


Implementação do Programa de Lista Encadeada Simples

197

5
Algoritmos e Estruturas de Dados - AED
Implementação do Programa de Lista Encadeada Simples

198

Algoritmos e Estruturas de Dados - AED


Implementação do Programa de Lista Encadeada Simples

199

6
Algoritmos e Estruturas de Dados - AED
Implementação do Programa de Lista Encadeada Simples

200

Algoritmos e Estruturas de Dados - AED


Implementação do Programa de Lista Encadeada Simples

201

7
Algoritmos e Estruturas de Dados - AED
Implementação do Programa de Lista Encadeada Simples

202

Algoritmos e Estruturas de Dados - AED


Implementação do Programa de Lista Encadeada Simples

203

8
Algoritmos e Estruturas de Dados - AED
Implementação do Programa de Lista Encadeada Simples

204

Algoritmos e Estruturas de Dados - AED


Implementação do Programa de Lista Encadeada Simples

205

9
Algoritmos e Estruturas de Dados - AED
Implementação do Programa de Lista Encadeada Simples

206

Algoritmos e Estruturas de Dados - AED


Pilhas

• Pilhas são estruturas de dados do tipo last in, first out (LIFO), ou seja, o último
elemento a ser inserido na estrutura, será o primeiro a ser retirado da estrutura.

• Podemos fazer uma comparação com uma pilha de pratos, em que, se quisermos
adicionar um prato na pilha, devemos colocá-lo topo, e, para pegar um prato da
pilha, retiramos o do topo.

• Dessa forma, temos que retirar o prato do topo para ter acesso ao próximo prato.

• Portanto, essa manipulação é feita apenas por uma das extremidades da lista, pelo
topo.

• Para processar/acessar o penúltimo item da estrutura, deve-se remover o último


item.

207

10
Algoritmos e Estruturas de Dados - AED
Pilhas

• Observe a representação de pilhas na Figura 1.

208

Algoritmos e Estruturas de Dados - AED


Pilhas

• Observe a representação de pilhas na Figura 1.

209

11
Algoritmos e Estruturas de Dados - AED
Pilhas

• Para manipular os dados em uma pilha, você pode usar as seguintes operações:
• criação (pull);
• inserção (push) (Figura 2);
• remoção (pop) (Figura 2);
• acessa elemento (top)

210

Algoritmos e Estruturas de Dados - AED


Filas

• As filas são estruturas de dados que armazenam os elementos de forma sequencial


(linear).

• As inserções e retiradas dos elementos são feitas em extremidades diferentes.

• É possível acessar duas extremidades: começo, em que é feita a retirada; e


término, em que é feita a inserção.

• Podemos implementar a fila simplesmente colocando as restrições adequadas nas


operações de adicionar e remover elementos de uma lista.

• Seu funcionamento é semelhante ao da pilha, só que na fila os elementos são


adicionados e removidos de extremidades diferentes.

211

12
Algoritmos e Estruturas de Dados - AED
Filas

• A pilha segue o critério last in first out (LIFO), ou seja, o último elemento a ser
inserido na estrutura será o primeiro a ser retirado da estrutura; já a fila segue o
critério FIFO, ou seja, o primeiro a ser inserido é o primeiro a ser retirado da
estrutura, como você pode observar na Figura 1.

212

Algoritmos e Estruturas de Dados - AED


Filas

• Podemos fazer uma comparação com uma fila de atendimento, em que a primeira
pessoa a entrar na fila, será a primeira pessoa a ser atendida e a sair da fila.

• As pessoas que chegarem para serem atendidas, serão posicionadas no final da fila.
Portanto, essa manipulação é feita apenas pelas duas extremidades da fila. Veja a
ilustração desse conceito na Figura 2.

213

13
Algoritmos e Estruturas de Dados - AED
Filas

• Podemos fazer uma comparação com uma fila de atendimento, em que a primeira
pessoa a entrar na fila, será a primeira pessoa a ser atendida e a sair da fila.

• As pessoas que chegarem para serem atendidas, serão posicionadas no final da fila.
Portanto, essa manipulação é feita apenas pelas duas extremidades da fila. Veja a
ilustração desse conceito na Figura 2.

214

Algoritmos e Estruturas de Dados - AED


Filas

• A implementação de filas se distingue pela natureza dos seus elementos (tipo do


dado armazenado), pela maneira como os elementos são armazenados (estática
ou dinamicamente) e pelas operações disponíveis para o tratamento da fila.

• A fila pode ser representada por duas formas, como descrito a seguir:
• Estática: caracteriza-se por utilizar um vetor (estrutura estática) para
representar a fila.
• Dinâmica: caracteriza-se por utilizar uma lista encadeada (estrutura dinâmica)
para representar a fila.

• As operações básicas suportadas em uma fila estática são:


• inserção;
• remoção;
• consulta;
• listagem.

215

14
Algoritmos e Estruturas de Dados - AED
Árvores

• A estrutura de dados em árvore é uma das mais importantes estruturas de dados


não lineares utilizadas na programação.

• Diferentemente das listas e filas, nas quais os dados se encontram em sequência,


nas árvores existe uma hierarquia na sua disposição.

• Há inúmeros problemas no mundo real que podem ser resolvidos utilizando


estruturas em árvore, por exemplo, a estrutura de pastas de um sistema
operacional.

216

Algoritmos e Estruturas de Dados - AED


Árvores

• O TAD árvore de busca binária permite várias operações de forma dinâmica como
inserção, remoção, busca, máximo e mínimo, além de algumas variações, por
exemplo, árvore rubro-negra (red-black tree), árvore B (B-tree), entre outras.

• As estruturas hierárquicas, conhecidas como árvores, contêm um conjunto finito


de um ou mais elementos (nós), sendo um desses chamado de nó raiz (ponto de
entrada da estrutura).

• Cada nó pode possuir a associação de zero ou mais subconjuntos de nós, os quais


são uma árvore denominada sub-árvore.

• O número de sub-árvores de um nó é
chamado de grau do nó e, na Figura 1,
você verá que o nó 1 possui grau 3.

217

15
Algoritmos e Estruturas de Dados - AED
Árvores

• O grau da árvore é o maior valor de grau de nó entre todos os seus nós, no caso do
exemplo, ela possui grau 3.

• Um nó que não possui sub-árvores é chamado de nó-folha.

• A árvore binária é um tipo especial, pois se trata de um conjunto finito de


elementos que está vazio ou particionado em três subconjuntos:
• 1. raiz da árvore;
• 2. sub-árvore da esquerda;
• 3. sub-árvore da direita.

218

Algoritmos e Estruturas de Dados - AED


Árvores

• Entre as principais aplicações das árvores, a manutenção de estruturas em que a


ordenação se faz importante é a mais usual.

• Para que seja possível manter a ordenação nos nós de uma árvore binária, podem
ser utilizadas três estratégias.

1. Pré-ordem: realiza uma varredura de uma árvore binária na qual o primeiro


nó é o nó raiz, seguido pela sub-árvore à esquerda em pré-ordem e pela sub-
árvore à direita em pré-ordem.

2. Intraordem: realiza uma varredura na árvore binária lendo inicialmente a


sub-árvore à esquerda em intraordem, seguido pelo nó raiz e, finalmente,
pela sub-árvore à direita em intraordem.

3. Pós-ordem: é realizada a varredura na qual se lê primeiro os nós da sub-


árvore à esquerda em pós-ordem, depois os nós da sub-árvore à direita em
pós-ordem e, finalmente, o nó raiz.
219

16
Algoritmos e Estruturas de Dados - AED
Árvores

• Uma árvore binária completa possui todas as folhas no mesmo nível k e, mesmo
possuindo muitos nós, a distância entre a raiz e uma folha qualquer é
relativamente curta.

• Você verá, na Figura 3, um exemplo de árvore binária completa com três níveis de
profundidade e 15 nós.

220

Algoritmos e Estruturas de Dados - AED


Grafos

• Você sabia que quando


anda de um ponto de
ônibus ou metrô para outro,
você está utilizando o
conceito de grafos?
Interessante, não é mesmo?
• Nós utilizamos diversos
conceitos computacionais
durante nosso cotidiano e
muitas vezes nem
percebemos.
• Pois é, você utiliza porque
um grafo traz a ideia da
junção de elementos que
são unidos por algo.
• Em geral, utilizamos, na
matemática, termos como
vértices, arcos, entre outros.

221

17
Algoritmos e Estruturas de Dados - AED
Grafos

• Você sabia que quando


anda de um ponto de
ônibus ou metrô para outro,
você está utilizando o
conceito de grafos?
Interessante, não é mesmo?
• Nós utilizamos diversos
conceitos computacionais
durante nosso cotidiano e
muitas vezes nem
percebemos.
• Pois é, você utiliza porque
um grafo traz a ideia da
junção de elementos que
são unidos por algo.
• Em geral, utilizamos, na
matemática, termos como
vértices, arcos, entre outros.

222

Algoritmos e Estruturas de Dados - AED


Grafos

• Grafo é uma forma de representar relacionamentos que existem entre pares de objetos.

• Isto é, um conjunto de objetos, chamados de vértices, juntamente com uma coleção de


conexões entre pares de vértices. [...] Grafos têm aplicações em vários domínios diferentes,
incluindo mapeamento, transporte, engenharia elétrica e redes de computador.

Grafo
representativo do
metro de Lisboa

223

18
Algoritmos e Estruturas de Dados - AED
Grafos

• A representação dos grafos está relacionada ao comportamento entre suas arestas e seus
vértices.
• Você irá notar que, geralmente, os vértices são visualmente representados por pontos, ou
círculos, e as arestas são representadas por retas, as quais têm como principal função fazer
a ligação entre os vértices.
• Mostramos um pouco desses conceitos logo acima, mas vamos observá-lo melhor na Figura
3.

224

Algoritmos e Estruturas de Dados - AED


Grafos

• As arestas em um grafo podem ser dirigidas ou não dirigidas (orientada ou não-orientada). A


Figura 4 traz um exemplo de um grafo orientado .

225

19
Algoritmos e Estruturas de Dados - AED
Grafos

• As arestas em um grafo podem ser dirigidas ou não dirigidas (orientada ou não-orientada). A


Figura 4 traz um exemplo de um grafo orientado .

226

20

Você também pode gostar