Aula 03. Estrutura de Dados

Propaganda
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
Download