Desafios de Programação

Aula 05

  • Conteúdo
    • Estruturas não-lineares
    • Atividades
Material Didático cedido pelo Professor Marcos Lage
Estruturas de dados elementares
O que é? (Revisão)
Estruturas de dados elementares
O que é? (Revisão)
Estruturas de dados elementares
Estruturas não lineares
Estruturas de dados elementares
Heap

Árvore em que cada nó tem até dois filhos e satisfaz uma das propriedades abaixo:

Sua construção requer na ordem de $n$ operações e a inserção e remoção de elementos custam na ordem de $log\,n$ operações.

Estruturas de dados elementares
Heap

São usadas para implementar filas com prioridade, isto é, uma fila em que a ordem de remoção dos elementos atende um critério de prioridade.

Estruturas de dados elementares
Heap

Operações básicas para a manipulação de uma fila com prioridade.

C/C++ - STL <priority_queue>:

          
// inclusão da biblioteca
#include <priority_queue>
using namespace std;

// declaração
priority_queue<int> a;

// inclusão de elementos
a.push(3);
a.push(2);

// acesso ao elemento da frente
int tmp = a.top();

// remoção do elemento da frente
a.pop();

// número de elementos
a.size();

// teste da fila está vazia
a.empty();
          
        
Obs: Estude a documentação oficial para descobrir outras funcionalidades!

Estruturas de dados elementares
Heap

Operações básicas para a manipulação de uma fila com prioridade.

Java - PriorityQueue:

          
// inclusão da biblioteca
import java.util.*;

// declaração
PriorityQueue<Integer> a = new PriorityQueue<Integer>();

// inclusão de elementos
a.add(3);
a.add(2);

// acesso ao elemento da frente
int tmp = a.peek();
// remoção do elemento da frente
a.pool();

// número de elementos
a.size();

// teste da fila está vazia
a.empty();
          
        
Obs: Estude a documentação oficial para descobrir outras funcionalidades!

Estruturas de dados elementares
Heap

Operações básicas para a manipulação de uma fila com prioridade.

Python - heapq:

          
# inclusão da biblioteca
import heapq

#declaração
a = []

# inclusão de elementos
heapq.heappush(a,3)
heapq.heappush(a,2)

# acesso ao elemento da frente
int tmp = heapq.nlargest(a)
# remoção do elemento da frente
heapq.heappop(a)

# número de elementos
len(a)

# teste da pilha está vazia
len(a) == 0
not a
          
        
Obs: Estude a documentação oficial para descobrir outras funcionalidades!

Estruturas de dados elementares
Dicionário
Estruturas de dados elementares
Dicionário

Operações básicas para a manipulação de um dicionário.

C/C++ - STL <map>:

          
// inclusão da biblioteca
#include <map>
using namespace std;

// declaração
map<string,int> a;

// inclusão de elementos
a.insert( std::pair<string,int>("c", 3) );
a.insert( std::pair<string,int>("s", 2) );

// acesso a um elemento
int tmp = a["c"];

// alteração de valores
a["c"] = 5;

// número de elementos
a.size();

// remoção do segundo elemento
a.erase(a.begin()+1);
// remoção dos três primeiros elementos
a.erase(a.begin(),a.begin()+3);
          
        
Obs: Estude a documentação oficial para descobrir outras funcionalidades!

Estruturas de dados elementares
Dicionário

Operações básicas para a manipulação de um dicionário.

Java - TreeMap:

          
// inclusão da biblioteca
import java.util.*;

// declaração
TreeMap<String,Integer> a = new TreeMap<String,Integer>();

// inclusão de elementos
a.put("c", 3);
a.put("s", 2);

// acesso a um elemento
int tmp = a.get("c");

// alteração de valores
a.replace("c", 5);

// número de elementos
a.size();

// remoção de um elemento
a.remove("c");
          
        
Obs: Estude a documentação oficial para descobrir outras funcionalidades!

Estruturas de dados elementares
Dicionário

Operações básicas para a manipulação de um dicionário.

Python:

          
# declaração
a = {}

# inclusão de elementos
a["c"] = 3
a["s"] = 2

# acesso a um elemento
int tmp = a["c"]

# alteração de valores
a["c"] = 5

# número de elementos
len(a)

# remoção de um elemento
del a["c"]
          
        
Obs: Estude a documentação oficial para descobrir outras funcionalidades!

Estruturas de dados elementares
Conjunto
Estruturas de dados elementares
Conjunto

Operações básicas para a manipulação de um conjunto.

C/C++ - STL <set>:

          
// inclusão da biblioteca
#include <set>
#include <algorithm>
using namespace std;

// declaração
map<string> a;
map<string> b;

// inclusão de elementos
a.insert( "c" );
a.insert( "s" );

b.insert( "c" );
b.insert( "d" );

// união dos conjuntos
map<string> v;
std::set_union (a.begin(), a.end(), b.begin(), b.end(), v.begin());
          
        
Obs: Estude a documentação oficial para descobrir outras funcionalidades!

Estruturas de dados elementares
Conjunto

Operações básicas para a manipulação de um conjunto.

Java - TreeSet:

          
// inclusão da biblioteca
import java.util.*;

// declaração
Set<String> a = new TreeSet<String>();
Set<String> b = new TreeSet<String>();

// inclusão de elementos
a.add("c");
a.add("s");

b.add("c");
b.add("d");

// união dos conjuntos
Set<String> v(a);
v.addAll(b);
          
        
Obs: Estude a documentação oficial para descobrir outras funcionalidades!

Estruturas de dados elementares
Conjunto

Operações básicas para a manipulação de um conjunto.

Python:

          
# declaração
a = set(["c", "s"])
b = set(["c", "d"])

# união dos conjuntos
v = a.union(b)
          
        
Obs: Estude a documentação oficial para descobrir outras funcionalidades!

Atividades
Sugestão de estudo

Leitura:

Exercícios:

Desafios de Programação

Aula 05

  • Conteúdo
    • Estruturas não-lineares
    • Atividades
Material Didático cedido pelo Professor Marcos Lage