TCC 00254: Desafios de Programação Aula 03. Estrutura de Dados Karina Mochetti 2017.1 Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Estruturas de Dados É um modo particular de armazenamento e organização de dados em um computador que seguem determinadas regras. Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Vetor É um modo particular de armazenamento e organização de dados em um computador que seguem determinadas regras. Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Vetor: C int v[100]; v[i] = x; int n; int *v = malloc(n*sizeof(int)); v[i] = x; free(v); Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Vetor: C++ std::vector push_back() pop_back() at() front() back() size() insert() erase() swap() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Vetor: Java java.util.Vector add() remove() clone() isEmpty() contains() elementAt() firstElement() lastElement() size() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Vetor: Python list.append() list.insert() list.remove() list.pop() list.count() list.copy() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Pilha É uma lista linear na qual o primeiro elemento a entrar é o último elemento a sair, LIFO do inglês Last In, First Out. Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Pilha: C typedef struct stack { int stk[100]; int top; } Stack; void push(Stack *s, int x) { ... } int pop(Stack *s) { ... } Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Pilha: C++ std::stack empty() size() push() pop() swap() top() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Pilha: Java java.util.Stack empty() peek() pop() push() search() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Pilha: Python list.append() list.pop() list.count() list.copy() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Fila É uma lista linear na qual o primeiro elemento a entrar é o primeiro elemento a sair, FIFO do inglês First In, First Out. Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Fila: C typedef struct node { int data; struct Node* next; } Node; typedef struct queue { Node *front, *back; } Queue; void push(Queue *q, int x) { ... } int pop(Queue *q) { ... } Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Fila: C++ std::queue front() back() push() pop() size() empty() swap() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Fila: Java java.util.LinkedList empty() peek() remove() add() size() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Fila: Python deque.append() deque.popleft() deque.count() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Heap É uma árvore na qual cada pai possui um valor maior que seus filhos, deixando assim o máximo na raiz. Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Heap: C typedef struct heap { int data[100]; int n; } Heap; void heapify(Heap *h) { ... } void push(Heap *h, int x) { ... } int pop(Heap *h) { ... } Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Heap: C++ std::priority_queue top() push() pop() size() empty() swap() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Heap: Java java.util.PriorityQueue contains() peek() remove() add() size() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Heap: Python heapq.heappush() heapq.heappop() heapq.heapify() heapq.nlargest() heapq.nsmallest() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Árvore AVL É uma árvore ordenada na qual cada filho esquerdo é menor que o pai e cada filho direito é maior que o pai. Além disso ela deve ser balanceada, ou seja, a diferença de alturas entre as árvores esquerda e direita não pode ser maior que 1. Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Árvore AVL: C typedef struct tree { struct tree *left, *right; int value; } Tree; void insert(Tree *t, int x) { ... } void delete(Tree *t, int x) { ... } int find(Tree *t, int x) { ... } Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Árvore AVL: C++ std::map size() insert() erase() swap() merge() find() lower_bound() upper_bound() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Árvore AVL: Java java.util.TreeMap containsKey() containsValue() isEmpy() get() put() size() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Árvore AVL: Python dict.has_key() dict.remove() dict.get() dict.pop() dict.copy() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Conjuntos É um modo particular de armazenamento de dados sem organização que permite a união e intersecção de elementos sem repetição. Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Conjuntos: C typedef struct set { int st[100]; int n; } Set; Set union(Set *s1, Set *s2) { ... } Set intersection(Set *s1, Set *s2) { ... } Set diff(Set *s1, Set *s2) { ... } Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Conjuntos: C++ std::set empty() size() insert() erase() swap() clear() find() count() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Conjuntos: Java java.util.HashSet contains() add() remove() isEmpy() clone() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados Conjuntos: Python set.add() set.remove() set.union() set.intersection() set.difference() Karina Mochetti TCC 00254: Aula 03. Estrutura de Dados