Aula 05
C/C++, Java e Python
das estruturas:
Á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.
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.
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();
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();
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
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);
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");
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"]
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());
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);
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)
Leitura:
Exercícios:
Aula 05