Aula 07. Estruturas de dados Lista, Pilha, Fila Pair, Map, Set e Bitset

Tamanho: px
Começar a partir da página:

Download "Aula 07. Estruturas de dados Lista, Pilha, Fila Pair, Map, Set e Bitset"

Transcrição

1 Logo

2 Aula 07 Estruturas de dados Lista, Pilha, Fila Pair, Map, Set e Bitset 2

3 Estrutura de Dados Estrutura de dados já foi vista em vetores, que foi uma maneira de manipular várias informações (variáveis ou estruturas) de uma vez só, pois poderíamos declarar vários desses elementos. Quando isso era feito, esses dados estavam em uma sequência rigidamente definida na memória, bem como o número de elementos eram constantes. Esses dois detalhes, na verdade, possuem algumas limitações. 3

4 Estrutura de Dados Viu-se anteriormente Alocação dinâmica de memória, onde deixamos de estar presos ao conceito de "número de elementos fixos", pois lá alocávamos e realocávamos o tanto de espaços de memória. Aplica-se os conceitos anterior nos tipos de estrutura de dados: Listas, Filas, Pilhas, Árvores e Grafo. 4

5 Estrutura de Dados Listas, filas e pilhas são estrutura de dados lineares. Árvores e Grafo são estrutura de dados não lineares. 5

6 Listas Encadeadas Esqueça a programação. Use seu bom senso e responda: o que é uma lista? Vamos supor que você fez uma lista de compras. Ou seja, tem um pedaço de papel com diversos elementos, em uma dada ordem. Provavelmente essa ordem é a que você vai comprar, do primeiro para o último. Geralmente elas tem uma sequência lógica, como elementos do mesmo setores estarem adjacentes. 6

7 Listas Encadeadas A analogia é parecida para uma lista em C/C++. Em programação, lista é uma série de elementos ligados. O primeiro é ligado no segundo, que é ligado no terceiro etc. Iremos aprender como colocar elementos, tirar, mudar de posição. Como elas estão ligadas, basta que tenhamos o endereço (ponteiro) para o primeiro elemento da lista. Ou seja, iremos estudar as chamadas listas encadeadas, que são itens 'alinhados' numa fila. 7

8 Listas Encadeadas A lista encadeada terá a seguinte estrutura: struct REGISTRO { int data; struct REGISTRO *next; ; 8

9 Listas Encadeadas É conveniente tratar as células como um novo tipo-de-dados e atribuir um nome a esse novo tipo: typedef struct REGISTRO celula; Uma célula c e um ponteiro p para uma célula podem ser declarados assim: celula c, *p; Se c é uma célula então c.data é o conteúdo da célula e c.next é o endereço da próxima célula. Se p é o endereço de uma célula, então p->data é o conteúdo da célula e p->next é o endereço da próxima célula. Se p é o endereço da última célula da lista então p->next vale NULL. 9

10 Listas Encadeadas A lista encadeadas precisam das funções: Inicia Insere Remove Imprimi Libera 10

11 Inicia A lista encadeada tem que ser inicializada sempre que for começar. celula* inicia (void) { return NULL; 11

12 Insere Considere o problema de inserir uma nova célula em uma lista encadeada. Suponha que quero inserir a nova célula entre a posição apontada por p e a posição seguinte. (É claro que isso só faz sentido se p é diferente de NULL). celula* insere (int x, celula *p) { celula *nova; nova = (celula *) malloc(sizeof(celula)); nova->data = x; nova->next = p; return nova; 12

13 Remove Considere o problema de remover uma certa célula de uma lista encadeada. Como especificar a célula em questão? A ideia mais óbvia é apontar para a célula que quer remover. 13

14 Remove celula* remove (int y, celula *p) { celula *a, *b; a = NULL; b = p; while (b!= NULL && b->data!= y) { a = b; b = b->next; if (b == NULL) { return p; if (a == NULL){ p = b->next; else { a->next = b->next; free (b); return p; 14

15 Imprimi Para imprimir o conteúdo de uma lista encadeada, faça: void imprima (celula *p) { celula *I; for (I = p; I!= NULL; I = I->next) { printf ("%d ", I->data); printf("\n"); 15

16 Libera Libera os valores da lista encadeadas. void libera(celula *p) { celula *lixo, *aux; lixo = p; while(lixo!= NULL) { aux = lixo->next; free(lixo); lixo = aux; 16

17 Exemplo O professor tem uma lista de itens a colocar e retirar de uma lista, para isso ele vai colocar I e um número inteiro e colocar R e um número a ser retirado. E para mostrar os valores que tem na lista ele vai colocar M. Você tem como fazer um programa que resolva esse problema do professor. 17

18 Programa #include <bits/stdc++.h> using namespace std; struct REGISTRO { int data; struct REGISTRO *next; ; typedef struct REGISTRO celula; celula* inicia (void); celula* insere (int x, celula *p); void imprima (celula *p); celula* remove (int y, celula *p); void libera(celula *p); 18

19 Programa celula* inicia (void) { return NULL; celula* insere (int x, celula *p) { celula *nova; nova = (celula *) malloc(sizeof(celula)); nova->data = x; nova->next = p; return nova; 19

20 Programa void imprima (celula *p) { celula *I; for (I = p; I!= NULL; I = I->next) { printf ("%d ", I->data); printf("\n"); celula* remove (int y, celula *p) { celula *a, *b; a = NULL; b = p; 20

21 Programa while (b!= NULL && b->data!= y) { a = b; b = b->next; if (b == NULL) { return p; if (a == NULL) { p = b->next; else { a->next = b->next; 21

22 Programa free (b); return p; void libera(celula *p) { celula *lixo, *aux; lixo = p; while(lixo!= NULL) { aux = lixo->next; free(lixo); lixo = aux; 22

23 Programa int main() { int n; char op; celula *p; freopen("entrada.txt", "r", stdin); p = inicia(); 23

24 Programa while (scanf(" %c", &op)!= EOF) { switch (op) { case 'I': scanf("%d", &n); p = insere(n, p); break; case 'R': scanf("%d", &n); p = remove(n, p); break; case 'M': imprima(p); 24

25 Programa libera(p); return 0; 25

26 Entrada do programa Entrada: I 10 I 20 I 30 M R 20 M I 40 I 50 R 10 R 30 M 26

27 Saída do programa Saída:

28 Listas Uma vez entendidas as listas encadeadas básicas, você pode inventar muitos outros tipos de listas encadeadas. Por exemplo, você pode construir uma lista encadeada circular, em que a última célula aponta para a primeira. O endereço de uma tal lista é o endereço de uma de suas células (a última, por exemplo). Você pode também ter uma lista duplamente encadeada: cada célula contém o endereço da célula anterior e o endereço da célula seguinte. Mas pode-se usar o vetor estático ou a STL com a vector para produzir uma lista encadeada. 28

29 FILA Uma fila é uma estrutura de dados dinâmica que admite remoção de elementos e inserção de novos objetos. Mais especificamente, uma fila (= queue) é uma estrutura sujeita à seguinte regra de operação: sempre que houver uma remoção, o elemento removido é o que está na estrutura há mais tempo. Em outras palavras, o primeiro objeto inserido na fila é também o primeiro a ser removido. Essa política é conhecida pela sigla FIFO (= First-In- First-Out). 29

30 FILA As funções suportadas pela fila da STL são: empty () - Retorna se a fila está vazia; size () - Retorna o tamanho da fila; front () - Retorna uma referência ao primeiro elemento da fila; back () - Retorna uma referência ao último elemento da fila; push (n) - Adiciona o elemento "n" no final da fila; pop () - Exclui o primeiro elemento da fila. 30

31 Programa #include <bits/stdc++.h> using namespace std; void imprima(queue <int> F); void imprima(queue <int> F) { queue <int> fila = F; while (!fila.empty()) { printf("%d ", fila.front()); fila.pop(); printf("\n"); 31

32 Programa int main() { queue <int> Fila; int n; char op; freopen("entrada.txt", "r", stdin); 32

33 Programa while (scanf(" %c", &op)!= EOF) { switch (op) { case 'I': scanf("%d", &n); Fila.push(n); break; case 'R': Fila.pop(); break; case 'M': imprima(fila); return 0; 33

34 Entrada do programa Entrada: I 10 I 20 I 30 M R M I 40 I 50 R R M 34

35 Saída do programa Saída:

36 Pilha Uma pilha é uma estrutura de dados que admite remoção de elementos e inserção de novos objetos. Mais especificamente, uma pilha (= stack) é uma estrutura sujeita à seguinte regra de operação: sempre que houver uma remoção, o elemento removido é o que está na estrutura há menos tempo. Em outras palavras, o primeiro objeto a ser inserido na pilha é o último a ser removido. Essa política é conhecida pela sigla LIFO (= Last-In- First-Out). 36

37 PILHA As funções associadas à pilha são: empty () - Retorna se a pilha está vazia; size () - Retorna o tamanho da pilha; top () - Retorna uma referência ao elemento mais alto da pilha; push (n) - Adiciona o elemento "n" no topo da pilha; pop () - Apaga o elemento mais alto da pilha. 37

38 Programa #include <bits/stdc++.h> using namespace std; void imprima(stack <int> P); void imprima(stack <int> P) { stack <int> pilha = P; while (!pilha.empty()) { printf("%d ", pilha.top()); pilha.pop(); printf("\n"); 38

39 Programa int main() { stack <int> P; int n; char op; freopen("entrada.txt", "r", stdin); 39

40 Programa while (scanf(" %c", &op)!= EOF) { switch (op) { case 'I': scanf("%d", &n); P.push(n); break; case 'R': P.pop(); break; case 'M': imprima(p); return 0; 40

41 Entrada do programa Entrada: I 10 I 20 I 30 M R M I 40 I 50 R R M 41

42 Saída do programa Saída:

43 List Listas são contêineres de sequência que permitem a alocação de memória não contígua. Em comparação com o vetor, a lista tem um percurso lento, mas assim que uma posição é encontrada, a inserção e a exclusão são rápidas. Normalmente, quando dizemos uma lista, falamos sobre a lista duplamente vinculada. Para implementar uma lista ligada, usamos a lista de encaminhamento. 43

44 LIST Funções usadas com a lista: front () - Retorna o valor do primeiro elemento da lista; back () - Retorna o valor do último elemento da lista; push_front (n) - Adiciona um novo elemento "n" no início da lista; push_back (n) - Adiciona um novo elemento "n" no final da lista; pop_front () - Remove o primeiro elemento da lista e reduz o tamanho da lista em 1; pop_back () - Remove o último elemento da lista e reduz o tamanho da lista em 1; 44

45 LIST Funções usadas com a lista: begin () - Retorna um iterador apontando para o primeiro elemento da lista; end () - Retorna um iterador apontando para o último elemento teórico que segue o último elemento; empty () - Retorna se a lista está vazia (1) ou não (0); insert () - Insere novos elementos na lista antes do elemento em uma posição especificada; erase () - Remove um único elemento ou um intervalo de elementos da lista; 45

46 LIST Funções usadas com a lista: assign () - Atribui novos elementos para lista, substituindo os elementos atuais e redimensiona a lista; remove () - Remove todos os elementos da lista, que são iguais ao dado elemento; reverse () - Inverte a lista; size () - Retorna o número de elementos na lista; sort () - Classifica a lista em ordem crescente. 46

47 Programa #include <bits/stdc++.h> using namespace std; void imprima(list <int> L); void imprima(list <int> L) { list <int> :: iterator it; for(it = L.begin(); it!= L.end(); ++it) { printf("%d ", *it); printf("\n"); 47

48 Programa int main() { list <int> L; int n, m; char op, ch; freopen("entrada.txt", "r", stdin); while (scanf(" %c", &op)!= EOF) { switch (op) { case 'I': scanf("%d %d", &n, &m); L.push_front(n); L.push_back(m); break; 48

49 Programa case 'R': scanf(" %c", &ch); if (ch == 'F') { L.pop_front(); else { L.pop_back(); break; case 'M': imprima(l); return 0; 49

50 Entrada do programa Entrada: I I I M R F M I I R B R B M 50

51 Saída do programa Saída:

52 Pair O contêiner de pair é um contêiner simples definido no cabeçalho <utility> que consiste em dois elementos ou objetos de dados. O primeiro elemento é referenciado como "first" e o segundo como "second" e o pedido é fixo (first, second). Pair é usado para combinar dois valores que podem ser diferentes no tipo. Par fornece uma maneira de armazenar dois objetos heterogêneos como uma única unidade. 52

53 Pair Pair pode ser atribuído, copiado e comparado. O vetor de objetos alocados em um map ou hash_map é do tipo "pair" por padrão, na qual todos os elementos "first" são chaves exclusivas associadas a seus objetos de valor "second". Para acessar os elementos, usamos o nome da variável seguido pelo operador de ponto seguido pela palavra-chave first ou second. sorting-vector-of-pairs-in-c-set-1-sort-by-first-and-second/ 53

54 Programa #include <bits/stdc++.h> using namespace std; int main() { vector <pair <int, char> > P; int n, i, x; char op; freopen("entrada.txt", "r", stdin); while (scanf("%d %c", &x, &op)!= EOF) { P.push_back(make_pair(x, op)); 54

55 Programa n = P.size(); for (i = 0; i < n; i++) { cout << P[i].second << " "; cout << P[i].first << endl; 55

56 Programa sort(p.begin(), P.end()); printf("ordenado pelo primeiro:\n"); for (i = 0; i < n; i++) { cout << P[i].second << " "; cout << P[i].first << endl; return 0; 56

57 Entrada do programa Entrada: 10 A 40 B 30 C 70 D 50 A 20 B 57

58 Saída do programa Saída: A 10 B 40 C 30 D 70 A 50 B 20 Ordenado pelo primeiro: A 10 B 20 C 30 B 40 A 50 D 70 58

59 Map Maps são contêineres associativos que armazenam elementos de forma mapeada. Cada elemento possui um valor de chave e um valor mapeado. Nenhum valor mapeado pode ter os mesmos valores de chave. Funções associadas ao map: begin () - Retorna um iterador para o primeiro elemento no map; end () - Retorna um iterador ao elemento teórico que segue o último elemento no map; size () - Retorna o número de elementos no map; map-associative-containers-the-c-standard-template-library-stl/ 59

60 Map Funções associadas ao map: max_size () - Retorna o número máximo de elementos que o map pode conter; empty () - Retorna se o map está vazio pair insert (keyvalue, mapvalue) - Adiciona um novo elemento ao map; erase (iterador position) - Remove o elemento na posição apontada pelo iterador; erase (const n) - Remove o valor da chave "n" do map; clear () - Remove todos os elementos do map; 60

61 Map Funções associadas ao map: key_comp () / value_comp () - Retorna o objeto que determina como os elementos no map são ordenados ('<' por padrão) find (const n) - Retorna um iterador ao elemento com o valor da chave "n" no map, se encontrado, senão retorna o iterador ao final count (const n) - count (const n) - Retorna o número de correspondências para o elemento com o valor da chave "n" no map; 61

62 Map Funções associadas ao map: lower_bound (const n) - Retorna um iterador ao primeiro elemento que é equivalente ao valor mapeado com o valor da chave "n" ou definitivamente não irá antes do elemento com o valor da chave "n" no map; upper_bound (const n) - upper_bound (const n) - Retorna um iterador ao primeiro elemento que é equivalente ao valor mapeado com o valor da chave "n" ou, definitivamente, irá após o elemento com o valor da chave "n" no map. 62

63 Programa #include <bits/stdc++.h> using namespace std; int main() { freopen("entrada.txt", "r", stdin); map <int, int> mapa; int i, n, x, y; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d %d", &x, &y); mapa.insert(pair <int, int> (x, y)); 63

64 Programa map <int, int> :: iterator itr; cout << "\to mapa eh:\n"; cout << "\tchave\telemento\n"; for (itr = mapa.begin(); itr!= mapa.end(); ++itr) { cout << '\t' << itr->first << '\t' << itr->second << '\n'; return 0; 64

65 Entrada do programa Entrada:

66 Saída do programa Saída: O mapa eh: Chave Elemento

67 URI 1281 #include <bits/stdc++.h> using namespace std; int main() { freopen("entrada.txt", "r", stdin); map <string, double> tab; double p, total; string prod; int c, n; scanf("%d", &c); Agradecimento ao amigo Edgar Almeira 67

68 URI 1281 while(c--){ total=0; scanf("%d", &n); while(n--){ cin >> prod; scanf("%lf", &p); tab[prod] = p; Agradecimento ao amigo Edgar Almeira 68

69 URI 1281 scanf("%d", &n); while(n--){ cin >> prod; scanf("%lf", &p); total += (tab[prod] * p); printf("r$ %.2lf\n", total); return 0; Agradecimento ao amigo Edgar Almeira 69

70 Entrada do programa Entrada: 2 4 mamao 2.19 cebola 3.10 tomate 2.80 uva mamao 2 tomate 1 uva 3 Entrada: 5 morango 6.70 repolho 1.12 brocolis 1.71 tomate 2.80 cebola brocolis 2 tomate 1 cebola 1 morango 1 Agradecimento ao amigo Edgar Almeira 70

71 Saída do programa Saída: R$ R$ Agradecimento ao amigo Edgar Almeira 71

72 Set Set são um tipo de contêineres associativos em que cada elemento deve ser único, porque o valor do elemento o identifica. O valor do elemento não pode ser modificado depois de adicionado ao conjunto, embora seja possível remover e adicionar o valor modificado desse elemento. 72

73 Set Funções associadas ao Set: begin () - Retorna um iterador para o primeiro elemento no conjunto; end () - Retorna um iterador ao elemento teórico que segue o último elemento no conjunto; size () - Retorna o número de elementos no conjunto; max_size () - max_size () - Retorna o número máximo de elementos que o conjunto pode conter; 73

74 Set Funções associadas ao Set: empty () - Retorna se o conjunto está vazio; par <iterator, bool> insert (const n) - Adiciona um novo elemento "n" ao conjunto; inserção do iterador (iterador position, const n) - Adiciona um novo elemento 'n' na posição apontada pelo iterador; erase (iterador position) - Remove o elemento na posição apontada pelo iterador; erase (const n) - Remove o valor "n" do conjunto; clear () - clear () - Remove todos os elementos do conjunto; 74

75 Set Funções associadas ao Set: ekey_comp () / value_comp () - Retorna o objeto que determina como os elementos no conjunto são ordenados ( < por padrão); find (const n) - Retorna um iterador ao elemento "n" no conjunto, se encontrado, senão retorna o iterador ao final; count (const n) - count (const n) - Retorna 1 ou 0 com base no elemento 'n' presente no set ou não; 75

76 Set Funções associadas ao Set: lower_bound (const n) - Retorna um iterador para o primeiro elemento que é equivalente a 'n' ou definitivamente não irá antes do elemento 'n' no conjunto; upper_bound (const n) - upper_bound (const n) - Retorna um iterador ao primeiro elemento que é equivalente a 'n' ou definitivamente irá após o elemento 'n' no conjunto. 76

77 Programa #include <bits/stdc++.h> using namespace std; int main() { freopen("entrada.txt", "r", stdin); set <int> S; set <int> :: iterator it; int i, n, x; scanf("%d", &n); 77

78 Programa for (i = 0; i < n; i++) { scanf("%d", &x); S.insert(x); printf("set: "); for (it = S.begin(); it!= S.end(); it++) { cout << *it << " "; cout << endl; return 0; 78

79 Entrada do programa Entrada:

80 Saída do programa Saída: Set:

81 Bitset Bitset é um vetor de bool mas cada valor booleano não é armazenado separadamente, em vez disso o bitset otimiza o espaço de modo que cada bool tome apenas 1 bit de espaço, portanto o espaço ocupado pelo bitset bs é menor que o bool bs [N] e vetor bs (N). No entanto, uma limitação do bitset é, N deve ser conhecido em tempo de compilação, ou seja, uma constante (esta limitação não está lá com vector e array dinâmica) 81

82 Bitset Como o bitset armazena as mesmas informações de maneira comprimida, a operação no bitset é mais rápida que a do array e vetor. Podemos acessar cada bit de bitset individualmente com a ajuda do operador de indexação de array[] que é bs [3] mostra bit no índice 3 do bitset bs como um array simples. Lembre-se que o bitset inicia sua indexação para trás, que é para 10110, 0 para os índices 0 e 3 e 1 para o primeiro e segundo índices. 82

83 Bitset Podemos construir um bitset usando o número inteiro, bem como a string binária via construtores, que é mostrada no código abaixo. O tamanho do bitset é fixo em tempo de compilação ou seja, não pode ser alterado em tempo de execução. A função principal definida para a classe de bitset é operator [], count, size, set, reset e muitos mais. 83

84 Programa #include <bits/stdc++.h> using namespace std; int main() { freopen("entrada.txt", "r", stdin); int i, n, x; bitset <16> B; cout << B << endl; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &x); cout << x << " - " << bitset<8>(x) << endl; return 0; 84

85 Entrada do programa Entrada:

86 Saída do programa Saída:

87 Programa #include <bits/stdc++.h> using namespace std; int main() { bitset<4> bset1(9); bitset<4> bset2(3); cout << bset1 << endl; cout << bset2 << endl; // operador de comparação cout << (bset1 == bset2) << endl; cout << (bset1!= bset2) << endl; // operação bitwise e atribuição cout << (bset1 ^= bset2) << endl; cout << (bset1 &= bset2) << endl; cout << (bset1 = bset2) << endl; 87

88 Programa // deslocando para a esquerda e para a direita cout << (bset1 <<= 2) << endl; cout << (bset1 >>= 1) << endl; // operador não cout << (~bset2) << endl; // operador bit a bit cout << (bset1 & bset2) << endl; cout << (bset1 bset2) << endl; cout << (bset1 ^ bset2) << endl; return 0; 88

89 Saída do programa Saída:

90 Exercícios URI 1110, Faça os exercícios de Estruturas do URI. 90

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 27 de setembro de 2018 Marco Antonio

Leia mais

IV Escola de Inverno Maratona de Programação UNIFEI Intermediário I

IV Escola de Inverno Maratona de Programação UNIFEI Intermediário I IV Escola de Inverno Maratona de Programação UNIFEI 2016 Intermediário I C++ STL - Standard Template Library C++ STL A STL (Standard Template Library) é uma biblioteca de algoritmos e estruturas de dados

Leia mais

O container vector funciona como um vetor comum, ou seja, os blocos de objetos estão contíguos, permitindo acesso aleatório.

O container vector funciona como um vetor comum, ou seja, os blocos de objetos estão contíguos, permitindo acesso aleatório. Capítulo 29 class O container vector vai ser apresentado em detalhes. Os demais containers serão apresentados de uma forma simplificada, pois as suas características são semelhantes a vector.

Leia mais

Algoritmos e Estruturas de Dados 2007/2008

Algoritmos e Estruturas de Dados 2007/2008 Pilhas e Filas Algoritmos e Estruturas de Dados 007/008 Pilhas Pilha estrutura de dados linear em que a inserção e a remoção de elementos de uma sequência se faz pela mesma extremidade, designada por topo

Leia mais

Recursividade UFOP 1/48

Recursividade UFOP 1/48 BCC 201 - Introdução à Programação I Recursividade Guillermo Cámara-Chávez UFOP 1/48 Introdução I Recursividade: é um método de programação no qual uma função pode chamar a si mesma Muitas estruturas têm

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Standard Template Library (STL) Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Standard Template Library Biblioteca padronizada de funções Oferece um

Leia mais

Prof. Marco Antonio M. Carvalho

Prof. Marco Antonio M. Carvalho Prof. Marco Antonio M. Carvalho Lembretes Lista de discussão Endereço: programaacao@googlegroups.com Solicitem acesso: http://groups.google.com/group/programaacao Página com material dos treinamentos http://www.decom.ufop.br/marco/extensao/obi/

Leia mais

Estrutura de Dados: Aula 3 - Linguagem C

Estrutura de Dados: Aula 3 - Linguagem C Estrutura de Dados: Aula 3 - Linguagem C Uso de Memória Alocação de memória Estática Ocorre em tempo de compilação no momento em que se define uma variável ou estrutura é necessário que se definam seu

Leia mais

Ponteiros. Embora o programador não tenha acesso ao endereço de uma variável, existem algumas situações onde é necessário a utilização deste endereço.

Ponteiros. Embora o programador não tenha acesso ao endereço de uma variável, existem algumas situações onde é necessário a utilização deste endereço. Logo Aula 06 Ponteiros 2 Ponteiros Embora o programador não tenha acesso ao endereço de uma variável, existem algumas situações onde é necessário a utilização deste endereço. Um exemplo clássico disto

Leia mais

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas ESTRUTURA DE DADOS DEBORAH FERREIRA S U M Á R I O Definição de Estrutura de Dados 1 Vetores 2 Listas Ligadas 4 Pilhas 6 Filas 8 D E F I N I Ç Ã O D E E S T R U T U R A D E D A D O S Estruturas de dados

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá Data structures AULA 04 Estrutura de Dados Uma estrutura de dados é uma maneira de armazenar

Leia mais

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, Filas Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, pelo uso da CPU Algoritmos e Estruturas de Dados I José

Leia mais

Estruturas de Dados Filas

Estruturas de Dados Filas Estruturas de Dados Filas Roteiro Introdução Definição de Fila (Queue) Aplicações Operações sobre Fila Implementação de Fila Com vetores Com listas encadeadas Exercícios Introdução Estamos acostumados

Leia mais

INF Estruturas de dados avançadas. Standard Template Library

INF Estruturas de dados avançadas. Standard Template Library INF1010 - Estruturas de dados avançadas Introdução a C++ Standard Template Library PUC-Rio 2 de maio de 2018 Standard Template Library (STL) Biblioteca de classes e algoritmos parte da biblioteca padrão

Leia mais

Standard Template Library (STL)

Standard Template Library (STL) Standard Template Library (STL) BCC 221 - Programação Orientada a Objectos(POO) Guillermo Cámara-Chávez Departamento de Computação - UFOP Introdução Considerando a utilidade do reuso de software e também

Leia mais

Estruturas de Dados - STL

Estruturas de Dados - STL Estruturas de Dados - STL Baseada na apresentação do prof. João Bittencourt Leandro Tonietto ltonietto@unisinos.br Algoritmos e Estruturas de Dados em C++ Unisinos http://www.inf.unisinos.br/~ltonietto/jed/aed/estruturadados-stl.pdf

Leia mais

Pilhas. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP

Pilhas. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP Pilhas Algoritmos e Estruturas de Dados I Nesta aula veremos o ADT pilha Uma pilha é usada em muitas situações tais como avaliação de expressões aritméticas, chamada e retorno de procedimentos e funções

Leia mais

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 04 Prof. Thomás da Costa thomascosta@aedu.com O que é: Matrizes São vetores que possuem duas ou mais dimensões para armazenar valores. Uma matriz de duas dimensões,

Leia mais

Aula 2 Listas Lineares Sequenciais. prof Leticia Winkler

Aula 2 Listas Lineares Sequenciais. prof Leticia Winkler Aula 2 Listas Lineares Sequenciais prof Leticia Winkler 1 Conteúdo Revisão de Vetor Definição Declaração Acesso dos Elementos Inicialização dos Elementos Exemplo Vetor e Função Lista Linear Operações com

Leia mais

Aula 11 Pilha Dinâmica. prof Leticia Winkler

Aula 11 Pilha Dinâmica. prof Leticia Winkler Aula 11 Pilha Dinâmica prof Leticia Winkler 1 Pilha Dinâmica (Dynamic Stack) Pilha implementada através de uma lista linear encadeada. É uma lista linear encadeada em que as operações de inserção e retirada

Leia mais

Estruturas de Dados - Filas

Estruturas de Dados - Filas Estruturas de Dados - Filas Leandro Tonietto ltonietto@unisinos.br Algoritmos e Estruturas de Dados em C++ Unisinos http://www.inf.unisinos.br/~ltonietto/jed/aed/filas.pdf Abr-8 Uma fila (queue) é uma

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Pilhas e Filas Algoritmos e Estruturas de Dados 009/00 Obs: slides marcados com (*) não foram apresentados na aula teórica, mas são parte da bibliografia a estudar! Pilhas Pilha estrutura de dados linear

Leia mais

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler Aula 7 e 8 Filas e suas Aplicações Prof. Leticia Winkler 1 Definição de Fila (Queue) São estruturas de dados do tipo FIFO (first-in first-out) - o primeiro elemento a ser inserido, será o primeiro a ser

Leia mais

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE PILHAS E FILAS Vanessa Braganholo Estruturas de Dados e Seus Algoritmos PILHAS E FILAS São tipos especiais de listas com disciplina restrita de acesso Acesso Consulta Inserção Remoção Disciplina

Leia mais

Estruturas de Dados Aula 11: TAD Pilha

Estruturas de Dados Aula 11: TAD Pilha Estruturas de Dados Aula 11: TAD Pilha Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 10; Estruturas

Leia mais

Biblioteca STL aplicada à Maratona de

Biblioteca STL aplicada à Maratona de Biblioteca STL aplicada à Maratona de Programação MEDITEC 5 29 de Maio de 2014 Introdução Estruturas de Dados Pilhas Filas Pares Vectores Listas e Iterators Árvores Balanceadas Strings Mapas Algoritmos

Leia mais

Tipos de Dados Abstractos Estruturas Lineares Listas

Tipos de Dados Abstractos Estruturas Lineares Listas Tipos de Dados Abstractos Estruturas Lineares Listas FEUP - MIEEC Programação 2-2008/2009 Tipo de Dados Abstractos (TDA) TDA conjunto de objectos + conjuntos de operações abstracção matemática (dados são

Leia mais

Estruturas Compostas Parte II

Estruturas Compostas Parte II Estruturas Compostas Parte II Filas e Pilhas Leonardo Tórtoro Pereira Slides fortemente baseados no material do professor Ricardo Farias: http://www.cos.ufrj.br/~rfarias/cos121/ Pilhas Pilhas Também conhecida

Leia mais

Linguagem C: Listas Encadeadas

Linguagem C: Listas Encadeadas Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Introdução 2 3 Organização Introdução 1 Introdução 2 3 Introdução Introdução

Leia mais

Tabelas Hash & Outras Estruturas

Tabelas Hash & Outras Estruturas Tabelas Hash & Outras Estruturas Prof. MSc. João Ricardo Bittencourt Algoritmos e Estrutura de Dados em C++ Desenvolvimento de Jogos & Entretenimento Digital UNISINOS Sumário 1. Conceito de hashing 2.

Leia mais

Programação Estruturada

Programação Estruturada Programação Estruturada Ponteiros Parte 1 Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Ponteiros Ponteiro Ponteiros

Leia mais

Aula 10 Alocação Dinâmica de Memória Listas Encadeadas. prof Leticia Winkler

Aula 10 Alocação Dinâmica de Memória Listas Encadeadas. prof Leticia Winkler Aula 10 Alocação Dinâmica de Memória Listas Encadeadas prof Leticia Winkler 1 Prof. Leticia Winkler 2 Alocação de Memória Reservar na memória (principal), o espaço para guardar a informação através da

Leia mais

Listas Lineares Ordenadas

Listas Lineares Ordenadas Listas Lineares Ordenadas Algoritmos e Estruturas de Dados I Nesta apresentação será apresentado o ADT lista linear ordenada Uma lista linear ordenada, ou simplesmente lista ordenada há uma ordem entre

Leia mais

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler Aula 14 Listas Duplamente Encadeadas prof Leticia Winkler 1 Lista Duplamente Encadeada É um tipo de lista encadeada que pode ser vazia (NULL) ou que pode ter um ou mais nós, sendo que cada nó possui dois

Leia mais

Aula 04. Agregados Homogêneos. Agregados Heterogêneos. Matrizes

Aula 04. Agregados Homogêneos. Agregados Heterogêneos. Matrizes Logo Aula 04 Agregados Homogêneos Matrizes Agregados Heterogêneos 2 Matriz Da mesma forma que as variáveis indexadas vetoriais, vistas anteriormente, as variáveis indexadas bidimensionais são utilizadas

Leia mais

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Estruturas de Dados

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Estruturas de Dados Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Estruturas de Dados Tópicos Especiais em Programação Site: http://jeiks.net E-mail: jacsonrcsilva@gmail.com

Leia mais

Templates. Programação de Computadores Estruturas de Dados. Alan de Freitas. Considere o código abaixo que encontra o maior elementos entre 3 ints

Templates. Programação de Computadores Estruturas de Dados. Alan de Freitas. Considere o código abaixo que encontra o maior elementos entre 3 ints Templates Programação de Computadores Estruturas de Dados São comuns situações em que operações muito parecidas podem ser executadas em diferentes tipos de dados Isto é especialmente verdade entre os tipos

Leia mais

ANHANGUERA ESTRUTURA DE DADOS AULA 06 LISTAS CIRCULARES E DUPLAMENTE ENCADEADAS. Prof. Thomás da Costa

ANHANGUERA ESTRUTURA DE DADOS AULA 06 LISTAS CIRCULARES E DUPLAMENTE ENCADEADAS. Prof. Thomás da Costa ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 06 Prof. Thomás da Costa thomascosta@aedu.com Vamos ver o PEA : PEA Estrutura de Dados Antes de iniciar a aula, vamos mostrar o andamento do PEA. Vou mostrar as

Leia mais

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 8 Listas Encadeadas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados (c) Dept. Informática

Leia mais

Algoritmos e Estruturas de Dados 2005/2006

Algoritmos e Estruturas de Dados 2005/2006 Pilhas e Filas Algoritmos e Estruturas de Dados 005/006 Pilhas Pilha estrutura de dados linear em que a inserção e a remoção de elementos de uma sequência se faz pela mesma extremidade, designada por topo

Leia mais

Capítulo 8: Abstrações de dados

Capítulo 8: Abstrações de dados Capítulo 8: Abstrações de dados Ciência da computação: Uma visão abrangente 11a Edition by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Estruturas de dados básicas Matriz homogênea Matriz

Leia mais

Lista Encadeada (Linked List)

Lista Encadeada (Linked List) Lista Encadeada (Linked List) As listas ou listas encadeadas são a estrutura de dados mais simples concebível excetuando-se naturalmente os arrays. Listas encadeadas nada mais são que uma seqüência de

Leia mais

programas = estrutura de dados + algoritmos

programas = estrutura de dados + algoritmos Algoritmos e Estruturas de Dados I1 Prof. Eduardo 1 1. INTRODUÇÃO O mundo tem mudado rapidamente com ajuda dos computadores. Podemos citar as pesquisas espaciais, o projeto genoma, os simuladores de vôo,

Leia mais

Estruturas de Informação. Biblioteca STL. Departamento de Engenharia Informática (DEI/ISEP) Fátima Rodrigues

Estruturas de Informação. Biblioteca STL. Departamento de Engenharia Informática (DEI/ISEP) Fátima Rodrigues Estruturas de Informação Biblioteca STL Departamento de Engenharia Informática (DEI/ISEP) Fátima Rodrigues mfc@isep.ipp.pt Programação Genérica Generic programming is a subdiscipline of computer science

Leia mais

Prof. Marco Antonio M. Carvalho

Prof. Marco Antonio M. Carvalho Prof. Marco Antonio M. Carvalho Lembretes Lista de discussão Endereço: programaacao@googlegroups.com Solicitem acesso: http://groups.google.com/group/programaacao Página com material dos treinamentos http://www.decom.ufop.br/marco/extensao/obi/

Leia mais

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010 Filas de prioridade Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010 Qual a Utilidade das Filas de Prioridade? Trabalhos maiores devem ser executados no fim (mesmo que não tenha sido o último

Leia mais

Professora Jeane Melo

Professora Jeane Melo Professora Jeane Melo Roteiro Lista Encadeada Alocação: Estática x Dinâmica O que são Ponteiros? Ponteiros Variáveis que Armazenam Endereços de Memória Mas, toda variável não é armazenada na memória? Ponteiros

Leia mais

Estruturas de Dados Encadeadas

Estruturas de Dados Encadeadas CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos

Leia mais

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Vetores vs Estruturas Dinâmicas Vetores (arrays): Ocupa um espaço contíguo de memória Permite acesso randômico

Leia mais

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 11: Exercício Integrador (parte 2)

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 11: Exercício Integrador (parte 2) PCS3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 11: Exercício Integrador (parte 2) Escola Politécnica da Universidade de São Paulo Agenda 1. Container List 2. Iterators

Leia mais

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra

Leia mais

CCO 016 Fundamentos de Programação

CCO 016 Fundamentos de Programação CCO 016 Fundamentos de Programação Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá Aula 05 Entrada de dados Leia scanf ou cin Entrada de Dados Entrada de dados compreende a operação

Leia mais

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Lista de Exercícios sobre Listas Implementadas por Encadeamento Lista de Exercícios sobre Listas Implementadas por Encadeamento 1) Se você tem de escolher entre uma representação por lista encadeada ou uma representação usando posições contíguas de memória para um

Leia mais

Introdução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila

Introdução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila Introdução a Programação Tipos Abstratos de Dados Implementando Pilha e Fila Abstração Abstração é o processo ou resultado de generalização por redução do conteúdo da informação de um conceito ou fenômeno

Leia mais

Pilhas e Filas. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io)

Pilhas e Filas. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io) Pilhas e Filas Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Pilhas 2 Pilhas (Stack) Estrutura similar às listas lineares que vimos na última aula [Mais Simples]

Leia mais

Linguagem C ponteiros

Linguagem C ponteiros Linguagem C ponteiros IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Introdução à linguagem C... Vetores Matrizes Funções Recursão Registros Aula

Leia mais

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica) SCC 202 Algoritmos e Estruturas de Dados I Pilhas (Stacks) (implementação dinâmica) Operações alocação encadeada dinâmica typedef struct elem{ tipo_info info; struct elem *lig; tipo_elem; typedef struct{

Leia mais

Universidade Federal de Mato Grosso do Sul. Standard Template Library (STL)

Universidade Federal de Mato Grosso do Sul. Standard Template Library (STL) Universidade Federal de Mato Grosso do Sul Facom - Faculdade de Computação Linguagem de Programação Orientada a Objetos Prof. Me. Liana Duenha Standard Template Library (STL) 1 Introdução A Standard Template

Leia mais

Filas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I

Filas. Prof. Túlio Toffolo  BCC202 Aula 12 Algoritmos e Estruturas de Dados I Filas Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 12 Algoritmos e Estruturas de Dados I O que é uma fila? 1 4 2 3 Fila 1 2 3 4 TAD Fila Tipo Abstrato de dados com a seguinte característica:

Leia mais

1. Listas sequenciais versus listas ligadas. Lista sequencial

1. Listas sequenciais versus listas ligadas. Lista sequencial Alocação Dinâmica Listas Ligadas 1. Listas sequenciais versus listas ligadas Lista sequencial Uma lista sequencial é um conjunto de elementos contíguos na memória. Um vetor é o melhor exemplo de lista

Leia mais

Atividade de laboratório listas encadeadas simples

Atividade de laboratório listas encadeadas simples Atividade de laboratório listas encadeadas simples 1. Estrutura básica Uma lista encadeada simples é uma estrutura de dados composta de uma seqüência de estruturas elementares chamadas nós. Cada nó contém

Leia mais

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas Listas Ligadas (Encadeadas) Matrizes são estruturas de dados muito úteis fornecidas nas linguagens de programação. No entanto, elas têm pelo menos duas limitações: 1- Seu tamanho tem que ser conhecido

Leia mais

Parte IV. Linguagens de Programação. Relembrando da Última Aula... Contêineres. STL (Standard Template Library) Prof. Miguel Elias Mitre Campista

Parte IV. Linguagens de Programação. Relembrando da Última Aula... Contêineres. STL (Standard Template Library) Prof. Miguel Elias Mitre Campista Linguagens de Programação Parte IV Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Introdução à Programação em (Continuação) Relembrando da Última Aula... Tratamento de exceção Mais exemplos

Leia mais

Programação Orientada a Objetos para Redes de Computadores. STL (Standard Template Library) Library) Contêineres. Contêineres PARTE 2

Programação Orientada a Objetos para Redes de Computadores. STL (Standard Template Library) Library) Contêineres. Contêineres PARTE 2 Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação - STL STL (Standard Template Library) Componentes baseados

Leia mais

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP Introdução à Computação II AULA 16 BCC Noturno - EMA896115B Prof. Rafael Oliveira olivrap@gmail.com Universidade Estadual Paulista Júlio de Mesquita Filho UNESP Rio Claro 2014 (Sem 2) Estruturas de Dados

Leia mais

Fila. 26 e 31/8/2008 Representação/Implementação: Seqüencial estática Encadeada dinâmica Exercícios/Aplicações

Fila. 26 e 31/8/2008 Representação/Implementação: Seqüencial estática Encadeada dinâmica Exercícios/Aplicações Fila 26 e 31/8/2008 Representação/Implementação: Seqüencial estática Encadeada dinâmica Exercícios/Aplicações Fila O que é? Para que serve? Modelos intuitivos de filas Linhas para comprar bilhetes de cinema

Leia mais

Módulo 10 Listas Encadeadas

Módulo 10 Listas Encadeadas Estruturas de Dados Módulo 10 Listas Encadeadas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Tópicos Listas Encadeadas Introdução às listas encadeadas Manipulação de elementos Implementações recursivas Listas

Leia mais

STL significa Standard Template Library. É uma biblioteca que contém algumas estruturas de dados, como árvore binária e lista encadeada.

STL significa Standard Template Library. É uma biblioteca que contém algumas estruturas de dados, como árvore binária e lista encadeada. STL significa Standard Template Library. É uma biblioteca que contém algumas estruturas de dados, como árvore binária e lista encadeada. Estas estruturas são chamadas de Containers. Elas armazenam coleções

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Linguagem C++: arrays - aula I Bruno Emerson Gurgel Gomes 1 1 Instituto Federal de Educação, Ciência e Tecnologia do RN (IFRN) 2012 Bruno Gomes (IFRN) Fundamentos de Programação

Leia mais

Lista de Exercícios 04

Lista de Exercícios 04 Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Disciplina: BCC202 - Estruturas de Dados I Professor: Túlio Toffolo (www.decom.ufop.br/toffolo)

Leia mais

Aula 01. Programação Condicional Programação repetitiva

Aula 01. Programação Condicional Programação repetitiva Logo Aula 01 Programação Condicional Programação repetitiva 2 Programação Condicional Uma programação condicional, como o próprio nome já diz, permite que determinadas instruções sejam executadas ou não,

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática Funções e Ponteiros1 EXERCÍCIOS COM PONTEIROS Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Funções e ponteiros O objetivo desta aula prática

Leia mais

Estrutura de dados 1. Ponteiros

Estrutura de dados 1. Ponteiros Estrutura de dados 1 Ponteiros Ponteiros Um ponteiro é um endereço de memória O valor de um ponteiro indica onde uma variável está armazenada Um ponteiro proporciona um modo de acesso a uma variável sem

Leia mais

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I Pilhas e Filas Encadeadas Algoritmos e Estruturas de Dados I Pilha Lista linear: pilha Represente graficamente o funcionamento da pilha, representando a pilha vazia, a entrada e a saída de elementos Quais

Leia mais

Aula de hoje. Listas. Sequências especiais. Introdução. Listas. Sequências. SCC Introdução à Programação para Engenharias

Aula de hoje. Listas. Sequências especiais. Introdução. Listas. Sequências. SCC Introdução à Programação para Engenharias SCC 12 - Introdução à Programação para Engenharias Aula de hoje Introdução Sequências Classes e objetos Listas Listas Operações em listas Pilhas e filas Professor: André C. P. L. F. de Carvalho, ICMC-USP

Leia mais

Aula 08. Estruturas de dados Árvore e Grafo

Aula 08. Estruturas de dados Árvore e Grafo Logo Aula 08 Estruturas de dados Árvore e Grafo 2 Árvore Estruturas estudadas até agora não são \ adequadas para representar dados que devem ser dispostos de maneira hierárquica Ex., hierarquia de pastas

Leia mais

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 11 Pilhas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Tratamento de exceção Mais

Leia mais

Aula 8- Standard Template Library. Arthur Ribacki Gabriel Portal Leonardo Chatain Luiz Fernando Scheidegger Rosália Schneider

Aula 8- Standard Template Library. Arthur Ribacki Gabriel Portal Leonardo Chatain Luiz Fernando Scheidegger Rosália Schneider Aula 8- Standard Template Library Arthur Ribacki Gabriel Portal Leonardo Chatain Luiz Fernando Scheidegger Rosália Schneider STL Motivação... int int_array = 5; char **vetor = new char*[int_array]; for(int

Leia mais

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Listas e Filas Estruturas de Dados 2 Estrututuras de dados lineares Pilhas (stack) Estrutura de dados onde a inserção

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

Algoritmos e Estruturas de Dados 2006/2007

Algoritmos e Estruturas de Dados 2006/2007 Filas de prioridade Algoritmos e Estruturas de Dados 2006/2007 Filas de prioridade Uma fila de prioridade permite, pelo menos, duas operações sobre um conjunto de valores comparáveis: inserção de um elemento

Leia mais

Ponteiros e Alocação de Memória

Ponteiros e Alocação de Memória Algoritmos e Estrutura de Dados I Ponteiros e Alocação de Memória Prof. Paulo Henrique Pisani fevereiro/2019 Memória Podemos entender a memória como um grande vetor de bytes devidamente endereçados: 0x1051

Leia mais

Prof. Marco Antonio M. Carvalho

Prof. Marco Antonio M. Carvalho Prof. Marco Antonio M. Carvalho Lembretes Lista de discussão Endereço: programaacao@googlegroups.com Solicitem acesso: http://groups.google.com/group/programaacao Página com material dos treinamentos http://www.decom.ufop.br/marco/extensao/obi/

Leia mais

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação 1I Prof. Osório Lista Linear Seqüencial (Alocação Estática) Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação

Leia mais

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS Listas Lineares Como visto anteriormente, as operações básicas para o nosso TAD Lista Linear são: FLVazia Vazia Retira Insere Imprime A implementação através de arrays

Leia mais

Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores

Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto programa estiver executando

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá sort AULA 02 Ordenação A classificação é um problema de design de algoritmo fundamental.

Leia mais

ESTRUTURA DE DADOS VARIÁVEIS E PONTEIROS

ESTRUTURA DE DADOS VARIÁVEIS E PONTEIROS ESTRUTURA DE DADOS VARIÁVEIS E PONTEIROS Prof. Dr. Daniel Caetano 2014-2 Objetivos Compreender a organização dos dados na memória Compreender o que são ponteiros Capacitar para implementar programas com

Leia mais

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco PONTEIROS E LISTAS Kalinka Regina Lucas Jaquie Castelo Branco kalinka@icmc.usp.br ALOCAÇÃO DINÂMICA DE MEMÓRIA Pode-se assumir que as variáveis declaradas na cláusula variável do pseudo-código do algoritmo

Leia mais

Algoritmos e Estruturas de Dados II IEC013

Algoritmos e Estruturas de Dados II IEC013 Algoritmos e Estruturas de Dados II IEC013 TAD, Pilhas e Filas Prof. César Melo Todos os créditos ao Prof. Leandro Galvão TAD: Definição SE programa = definição de um tipo de dados + operação sobre dados

Leia mais

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista Pilha SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências

Leia mais

Introdução à Computação

Introdução à Computação Introdução à Computação Linguagem C Professor: André de Carvalho Aula de hoje Introdução Tipos compostos Tipo enumeração Conclusão Tipos compostos A Linguagem C permite criar tipos de dados definíveis

Leia mais

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1 Listas Lineares Elerson R. S. Santos elerson@dcc.ufmg.br Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1 http://www2.dcc.ufmg.br/livros/algoritmos/ Listas Lineares Uma das formas mais simples

Leia mais

Algoritmos e Estruturas de dados

Algoritmos e Estruturas de dados Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Oitava Aula Prática - 29 de outubro de 2010 O objetivo desta aula prática é exercitar ponteiros e funções. 1 Exercícios com ponteiros

Leia mais

Estrutura de Dados II. Prof. Sérgio Portari

Estrutura de Dados II. Prof. Sérgio Portari Estrutura de Dados II Prof. Sérgio Portari - 2016 Plano de Ensino EMENTA: Filas, Árvores e suas generalizações: árvores binárias, árvores de busca, árvores balanceadas, árvores B e B+. Aplicações de árvores

Leia mais

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões Edital de Seleção 024/2017 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: «Nome» INSCRIÇÃO: «Inscrição» Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome

Leia mais