Você está na página 1de 49

Ciência da

Computação

Estruturas de Dados e
Paradigmas
Aula 04
Prof. Anderson Silva
Preliminares

Plano de Estudos

Aulas Descrição

Unidade 1 - Paradigmas de Programação Paradigmas de Linguagens de Programação

Unidade 2 - Estruturas de Dados Listas, Pilhas e Filas, Árvores Binárias e


AVL, Heaps e Grafos

Unidade 3 - Algoritmos Caminho mais Curto, Bellman-Ford


Floyd-Warshall, Árvore Geradora Mínima

Unidade 4 - Tópicos avançados Estruturas Disjuntas, Tabelas de Dispersão


(hash), Árvore de Fenwick
Unidade 02
Estruturas de Dados
Introdução

Estruturas de Dados
● Listas Lineares

● Ponteiros

● Pilhas e Filas

● Listas encadeadas
Pilhas e Filas

Pilhas e Filas (ou stack e queue)


Pilhas e filas são estruturas de dados em que os elementos são organizados em
ordem sequencial. São utilizadas quando os elementos a serem inseridos e
removidos estão em posições especiais: a primeira ou a última posição.

● Pilhas são chamadas estruturas LIFO - Last In First Out


● Filas são chamadas estruturas FIFO - First In First Out
Pilhas e Filas

Pilhas (stacks)
● Elementos inseridos e removidos apenas de uma extremidade, o topo.

● A inserção de um novo elemento é


feita com a função “empilhar” (ou push)

● A remoção de um elemento é feita


com a função “desempilhar” (ou pop)

● O último a entrar é sempre


o primeiro a sair" (LIFO - Last In, First Out).
Pilhas

Exemplo
Instruções
Empilha(10);
Empilha(5);
Empilha(7);
Desempilha();
Desempilha();
Empilha(9)

PILHA
Pilhas

Exemplo
Instruções
Empilha(10);
Empilha(5);
Empilha(7);
Entra
Desempilha();
Desempilha();
Empilha(9)
Nó 1 10 topo

PILHA
Pilhas

Exemplo
Instruções
Empilha(10);
Empilha(5);
Empilha(7);
Desempilha();
Desempilha();
Empilha(9)
Nó 1 10 topo

PILHA
Pilhas

Exemplo
Instruções

Entra Empilha(10);
Empilha(5);
Empilha(7);
Desempilha();
Desempilha();
Nó 2 5 topo Empilha(9)
Nó 1 10

PILHA
Pilhas

Exemplo
Instruções
Empilha(10);
Empilha(5);
Empilha(7);
Desempilha();
Desempilha();
Nó 2 5 topo Empilha(9)
Nó 1 10

PILHA
Pilhas

Exemplo
Instruções
Entra
Empilha(10);
Empilha(5);
Empilha(7);
Nó 3 7 topo
Desempilha();
Desempilha();
Nó 2 5
Empilha(9)
Nó 1 10

PILHA
Pilhas

Exemplo
Instruções
Empilha(10);
Empilha(5);
Empilha(7);
Nó 3 7 topo
Desempilha();
Desempilha();
Nó 2 5
Empilha(9)
Nó 1 10

PILHA
Pilhas

Exemplo
Sai

Instruções
7 Empilha(10);
Empilha(5);
Empilha(7);
Desempilha();
Desempilha();
Nó 2 5 topo Empilha(9)
Nó 1 10

PILHA
Pilhas

Exemplo
Instruções
Empilha(10);
Empilha(5);
Empilha(7);
Desempilha();
Desempilha();
Nó 2 5 topo Empilha(9)
Nó 1 10

PILHA
Pilhas

Exemplo
Sai

Instruções
5 Empilha(10);
Empilha(5);
Empilha(7);
Desempilha();
Desempilha();
Empilha(9)
Nó 1 10 topo

PILHA
Pilhas

Exemplo
Instruções
Empilha(10);
Empilha(5);
Empilha(7);
Desempilha();
Desempilha();
Empilha(9)
Nó 1 10 topo

PILHA
Pilhas

Exemplo
Instruções

Entra Empilha(10);
Empilha(5);
Empilha(7);
Desempilha();
Desempilha();
Nó 2 9 topo Empilha(9)
Nó 1 10

PILHA
Pilhas

Exemplo

Funções de
Inicialização
Pilhas

Exemplo

Checa se a pilha
está cheia ou Vazia
Pilhas

Exemplo

Insere ou Remove
elementos da Pilha
Pilhas

Exemplo

Testando a
Implementação da
Pilha
Pilhas e Filas

Filas (queues)
● Elementos inseridos e removidos apenas de uma extremidade, o topo.

● A inserção de um novo elemento é


feita com a função “enfileirar”

● A remoção de um elemento é feita


com a função “desenfileirar”

● O primeiro a entrar é sempre


o primeiro a sair" (FIFO - First In, First Out).
Filas

Exemplo
FILA
Instruções
inicio Enfileirar(3);
fim Enfileirar(5);
Enfileirar(7);
Desenfileirar();
Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções
inicio Enfileirar(3);
fim Enfileirar(5);
Enfileirar(7);
Desenfileirar();
Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

3 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio Desenfileirar();
fim Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

3 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio Desenfileirar();
fim Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

3 5 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio fim Desenfileirar();
Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

3 5 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio fim Desenfileirar();
Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

3 5 7 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio fim Desenfileirar();
Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

3 5 7 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio fim Desenfileirar();
Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

5 7 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio fim Desenfileirar();
Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

5 7 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio fim Desenfileirar();
Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

7 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio Desenfileirar();
fim Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

7 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio Desenfileirar();
fim Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

7 9 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio fim Desenfileirar();
Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

7 9 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio fim Desenfileirar();
Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo
FILA
Instruções

7 9 11 Enfileirar(3);
Enfileirar(5);
Enfileirar(7);
inicio fim Desenfileirar();
Desenfileirar();
Enfileirar(9)
Enfileirar(11)
Filas

Exemplo

Funções de
Inicialização
Filas

Exemplo

Checa se a fila está


cheia ou Vazia
Filas

Exemplo

Insere elementos
na Fila
Filas

Exemplo

Remove elementos
da Fila
Filas

Exemplo

Testando a
Implementação da
Fila
Pilhas e Filas

Exercícios com PILHAS


1. Dada as operações de pilha insere (I) e remove (R), escreva
a configuração final da pilha após as seguintes operações:
I(10), I(20), R, I(30), I(45), I(21), R, R.

2. Suponha que uma pilha possua 4 valores na seguinte ordem:


1, 2, 3 e 4. Qual seria a sequência correta de operações de
inserção (I) e eliminação (E) para se obter os registros na
ordem 2 4 3 1?
Pilhas e Filas

3. Implemente um algoritmo, utilizando uma Pilha de caracteres,


que inverte as letras de cada palavra de um texto terminado por
ponto (.) preservando a ordem dos caracteres. Por exemplo,
dado o texto:

ESTRUTURAS DE DADOS
A saída deve ser
SODAD ED SARUTURTSE
Pilhas e Filas

4. Implemente um programa que utilize uma pilha para verificar se


expressões aritméticas estão com a ordem correta de parênteses. O
programa deve verificar expressões para ver se cada “abre
parênteses" tem um “fecha parênteses” correspondente. Ex:
Correto: ( ( ) ) – ( ( )( ) ) – ( ) ( )
Incorreto: )( – ( ( ) ( – ) ) ( (

5. Dado uma pilha que armazene inteiros, escreva uma função para
ordenar os valores da pilha em ordem crescente.
Pilhas e Filas

6. Desenvolva uma função para inverter a posição dos elementos


de uma pilha.
7. Desenvolva uma função para testar se duas pilhas P1 e P2 são
iguais.
Pilhas e Filas
Exercícios com FILAS
7. Dada as operações de pilha insere (I) e remove (R), escreva a
configuração final da pilha após as seguintes operações: I(10), I(20), R,
I(30), I(45), I(21), R, R.

8. Implemente a função inverter, que reposiciona os elementos na fila


de tal forma que o início da fila torna-se o fim, e vice-versa.

9. Implemente uma função que receba três filas, duas já preenchidas


em ordem crescente e preencha a última com os valores das duas
primeiras em ordem crescente.
Pilhas e Filas

10. Implemente uma função que receba três filas, duas já


preenchidas em ordem crescente e preencha a última com os
valores das duas primeiras em ordem crescente.

Você também pode gostar