ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

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

Download "ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti"

Transcrição

1 ESTRUTURAS DE DADOS I Notas de Aula

2 1 SUMÁRIO 1. INTRODUÇÃO Array (vetores) BUSCA DE ELEMENTOS Busca Seqüencial Busca Binária Busca Indexada Busca Hash PONTEIROS Alocação de Memória LISTAS Listas Ligadas Variações de Listas Ligadas Lista Circular Lista Duplamente Encadeada Comparação de Listas RECURSÃO Recursão de Cauda Recursão de Cabeça Resolução de Recursões FILAS Filas com alocação dinâmica Filas usando Vetores PILHAS Pilhas com alocação dinâmica Pilhas usando Vetores ÁRVORES Percurso em Ordem (ERD) Percurso em Pré Ordem (RED) Percurso em Pós Ordem (EDR) Inserção em Árvore Recursivamente Impressão Seguindo o Modelo Em Ordem Percurso em Largura TIPOS DE ÁRVORES BINÁRIAS Árvore Binária vazia/completa Árvore Estritamente Binária Árvores Binárias Similares Árvores Binárias Simétricas Árvores para Avaliação de Expressões Árvores AND/OR

3 2 1. INTRODUÇÃO Estruturas de dados são implementações computacionais de tipos de dados abstratos (TDA). Esses tipos de dados complementam os tipos básicos de cada linguagem de programação (ex: char, int, float, double, entre outros). Além disso, definem valores e operações que podem ser realizados sobre esses valores. As principais funções das estruturas de dados são: Prover abstrações (modelos) que possam representar problemas; Possibilitar formas de implementação para solucioná-las computacionalmente. 1.1 Array (vetores) São estruturas ordenadas, unidimensionais e homogêneas, isto é, armazenam elementos do mesmo tipo. Exemplo: A [0] [1] [2] [3] [4] [5] [6] [7] Exercício: Implemente uma função que: Leia uma seqüência de 20 números inteiros, armazene-os em um vetor e calcule a média desses valores; Imprima o valor máximo e mínimo; Procure um número no vetor e retorne 1 (true) caso ele esteja presente e 0 (false) caso contrário. Discuta variações na implementação proposta, comparando-as. Tabela: Número de Operações x Tamanho da entrada 1 n log 2 n n² n³ 2 n n n K 1K 10G K 1M 10G >> 1K 1 1K 10 1M 1G K 1K >>

4 3 2. BUSCA DE ELEMENTOS 2.1 Busca Seqüencial Na busca seqüencial os elementos são procurados um a um, geralmente a partir de estruturas lineares de armazenamento. Para buscar um elemento em um conjunto de n números, ou melhor, elementos, são necessárias até n comparações (média de n/2 comparações). 2.2 Busca Binária Na busca binária, os elementos são procurados dividindo-se uma seqüência ordenada em dois subconjuntos. O elemento procurado é comparado ao central, O processo de busca continua na semi-seqüência apropriada. Em um conjunto de n elementos, são necessárias até log 2 (n+1) comparações, sendo normalmente representada por log 2 n. 2.3 Busca Indexada Nesse tipo de busca, usa-se uma estrutura auxiliar denominada índice. Uma das formas mais simples de índices são tags, que funcionam como flags Busca Hash Nesse tipo de busca utiliza-se uma função injetora f(ch) = sl, onde: ch: chave de busca; sl: slot de armazenamento. Implementa-se sl=(ch mod 10), por exemplo: Slots:

5 4 Exercícios: 1- Programe uma função que implemente Busca Binária em um vetor ordenado. 2- Compare os diferentes métodos de busca que você conhece, identificando virtudes e defeitos. Identifique tipos de aplicações, onde seria adequado utilizar cada um deles. 3- Implementar uma função que a realize a Busca Binária de um elemento em um vetor de inteiros. A função deve aceitar como parâmetros o número a ser procurado, o número de elementos do vetor e o vetor ordenado. Deve retornar 1 (true) caso o elemento esteja presente no vetor e 0 (false) caso contrário. 3. PONTEIROS Ponteiros são variáveis que armazenam endereços de memória. São úteis para: Modificar o conteúdo de parâmetros de funções; Aumentar a eficiência de programas; Manipular estruturas dinâmicas, como listas, filas, pilhas, grafos, árvores etc. Assim são construções extremamente poderosas na resolução de problemas, mas precisam ser manipuladas com cuidado. Erros de programação com ponteiros estão entre os mais difíceis de serem corrigidos. Para minimizar isso, utiliza-se a convenção de inicializar ponteiros com NULL (normalmente igual à zero). Exemplo: int contador; int *pont; contador = 1; pont = &contador; printf ( Endereço da variável %d\n, pont); printf ( Conteúdo da variável %d\n, *pont); Assim, as principais operações com ponteiros são: &, que devolve o endereço da variável; *, que devolve o conteúdo da variável. 3.1 Alocação de Memória A alocação de ponteiros em memória varia de acordo com o compilador e a arquitetura utilizada. A seguir, é apresentado um modelo típico de alocação em memória.

6 5 Programa Variáveis Globais Heap Estruturas Dinâmicas Variáveis locais endereços Pilha (stack) Para alocar espaço em memória existe o comando malloc(nº de bytes); Para liberar esse espaço de memória, usa-se o comando free (ponteiro); 4. LISTAS 4.1 Listas Ligadas Uma lista ligada é uma estrutura de dados dinâmica e seqüencial, sendo acessada através de um ponteiro inicial. Representação gráfica Início Chave Chave Chave Próximo Próximo Próximo NULL Declarações struct no int chave; struct no *proximo; ; struct no *inicio; Alocação de Elemento #include <stdlib.h> inicio 5 NULL inicio = (struct no *) malloc (sizeof (struct no)); inicio->chave = 5; inicio->proximo = NULL;

7 6 Ligação de Elementos struct no *inicio, *aux; inicio = (struct no*) malloc (sizeof(struct no)); aux = (struct no*) malloc (sizeof(struct no)); inicio->chave = 5; inicio->proximo = aux; aux->próximo = 10; aux->próximo = NULL; inicio 5 10 NULL Exercício: Criar uma lista ligada com 5 nós; Ponteiros Especiais Para a manipulação de estruturas dinâmicas, alguns ponteiros são particularmente importantes. Head (cabeça): ponteiro que dá acesso à estrutura e denota seu início; Tail (cauda): ponteiro que dá acesso ao final da estrutura. É necessário em alguns tipos de estruturas como filas e listas com inserção no final. NULL: flag que indica o final do caminho de ponteiros, impedindo o referenciamento a endereços de memória inconsistentes. 4.2 Variações de Listas Ligadas Lista Ligada com inserção no Final inicio 1 fim fim 2 N-1 N... NULL x

8 7 Lista Ligada com inserção no Início N inicio N-1 N-2 1 fim... NULL Lista com inserção em Ordem inicio 1 K-1 K+1 N fim K... NULL Exercício: Considere uma lista ligada, acessada por um ponteiro de início (além da declaração da estrutura nó dada anteriormente). a-) Faça um algoritmo que percorrera todas as listas, imprimindo os valores dos campos chave. b-) Faça uma função que insira um número (inteiro) n no início da lista. c-) Faça um função que insira um inteiro n em ordem crescente, na lista ligada. 4.3 Lista Circular O ponteiro do ultimo nó (Tail) aponta para o primeiro (Head), formando um ciclo. inicio... (struct no*)insere_circular((struct no*)inicio, int n);

9 8 4.4 Lista Duplamente Encadeada Um determinado nó aponta tanto para seu sucessor quanto para seu antecessor. inicio... (struct no*)insere_dupla((struct no*)inicio, int n); 4.5 Comparação de Listas Duas listas são iguais quando possuem a mesma estrutura e número de elementos, e os valores dos nós correspondentes são iguais. Exercício: 1-) Faça uma função iterativa que receba os ponteiros de duas listas e retorne 1 caso elas sejam iguais e 0 caso contrário. 2-) Idem usando função recursiva. 3-) Inserir elementos no fim da uma lista com recursão. 5. RECURSÃO 5.1 Recursão de Cauda Ocorre quando a chamada recursiva é realizada após a execução das demais instruções. Sua execução é muito similar às versões iterativas com laço de repetição. Exemplo: void imprime (no * lista) if( lista!= NULL ) printf ( %d, lista->chave); imprime (lista->prox);

10 9 5.2 Recursão de Cabeça Quando a chamada recursiva é realizada antes da execução das demais instruções. Nesse caso, essas instruções são realizadas na volta da recursão (em ordem inversa das chamadas). Exemplo: void imprime (no * lista) if (lista!= NULL) imprime (lista -> prox); printf ( %d, lista->chave); 5.3 Resolução de Recursões Uma vez que as recursões são baseadas em induções, podemos resolvê-las usando o seguinte método. 1. Especular a resposta para o caso mais simples, também chamada critério de parada, por exemplo, quando n = 0 (n = número de elementos de entrada). 2. Supor que sabemos resolver o problema para n-1 elementos. 3. Especificar a solução para n elementos, baseando na resposta para o caso mais simples, buscando resolver o caso mais geral. Exercícios: 1-) Calcular o fatorial de n, n Ν. 2-) Calcular o produto de 2 números naturais, a partir de somas. Ex: 4 3 = ) Gerar a seqüência de Fibonacci, dada por: fib(0) = 0 fib(1) = 1 fib( n) = fib( n 1) fib( n 2) 4-) Calcular o número de nós de uma lista ligada. 5-) Calcular a soma dos elementos de uma lista ligada.

11 10 6-) Resolver o problema das torres de Hanói. Origem Destino Auxiliar 6. FILAS 6.1 Filas com alocação dinâmica Filas são estruturas de dados lineares com uma política de inserção e remoção de elementos sem definida. Essa política é denominada FIFO (First In, First Out), ou seja, os elementos são inseridos e retirados da fila na mesma ordem. Aplicações: Cliente servidor. Escalonamento de processos, em Sistemas Operacionais. Análise de desempenho de sistema (ex.: redes de computadores). Threads entre outras. Implementação: Simples, através de uma lista com inserção em um extremo e remoção de elementos no outro. Exemplo: Início (retirada) Fim (inserção) NULL 6.2 Filas usando Vetores Embora o uso de vetores exija a definição do número máximo de elementos a priori, em alguns casos seu uso pode ser desejável ou mesmo necessário. A simulação de filas dinâmicas através de vetores estáticos pode ser realizada através de algoritmos similares aos conhecidos.

12 11 Fila vazia. a1 a1 a2 Inserção de a1. Inserção de a2. a2 a3 a4 Remoção de a1, e inserção de a3 e a4.... a4 a5 a6 a7 a8 Fila cheia? Outro algoritmo muito conhecido também é usando uma array circular, neste caso ao removermos um elemento do vetor e todos os seus sucessores avançam uma posição. Fila vazia. a1 a1 a2 Inserção de a1. Inserção de a2. a2 a3 a4 a5 Remoção de a1, e inserção de a3 e a4.... a4 a5 6a a7 a8

13 12 7. PILHAS 7.1 Pilhas com alocação dinâmica Uma pilha (stack) é uma estrutura de dados linear que implementa a estratégia FILO (First In, Last Out) as vezes também chamada de LIFO. Sua estrutura se assemelha como uma pilha de livros. Ao empilharmos livros em uma mesa, o primeiro a ser retirado é o ultimo que foi colocado. Aplicações: Durante a execução de um programa, para o armazenamento de valores de variável local. Muito usada em SO s e compiladores. As operações similares às das filas, com inserção de elementos (push) e remoção (pop) na mesma extremidade. Implementação:

14 Pilhas usando vetores Diferente do uso de filas, nas pilhas, o ultimo elemento que entrou é o primeiro a sair (FILO). Por exemplo: Pilha vazia. a1 a1 a2 Inserção de a1. Inserção de a2. a1 a3 a4 Remoção de a2, e inserção de a3 e a4. 8. ÁRVORES Árvores são estruturas de dados que possuem as seguintes características: Cada nó (a exceção de um) possui um nó antecessor, chamada pai e zero ou mais nós sucessores chamadas filhos. O nó sem antecessor é denominado raiz. Os nós que não possuem sucessores são chamadas folhas. As árvores são estruturas recursivas. Pai Sub-árvore Filho Folhas

15 14 Ordem de uma árvore é o número máximo de filhos que seus nós possuem. Em particular, uma árvore de ordem 2 é denominada binária. Uma Árvore binária de busca é uma árvore binária onde os valores dos nós à esquerda são menores que o valor do nó pai, e os da direita são maiores. A altura de uma árvore é o maior caminho entre a raiz e suas folhas. Exemplo de árvore binária de busca: 30 Raíz Percurso em Ordem (ERD) Nesse tipo de percurso os nós da árvore são visitados na seguinte ordem: esquerda, raiz e direita recursivamente, ou seja, a saída estará em ordem crescente. Exemplo: 12 Raíz Algoritmo: void Ordem(Struct No *raiz) if(raiz!= NULL) preordem(raiz->esquerda); printf( %d, raiz->inf); preordem(raiz->direita); Saída: 5, 8, 9, 12, 13, 15, 20

16 Percurso em Pré Ordem (RED) Percurso dos nós na seqüência. Raiz, esquerda, direita. Algoritmo: void preordem(struct No *raiz) if(raiz!= NULL) printf( %d, raiz->inf); preordem(raiz->esquerda); preordem(raiz->direita); Saída: 12, 8, 5, 9, 15, 13, Percurso em Pós Ordem (EDR) Algoritmo: Esquerda, direita, raiz. void preordem(struct No *raiz) if(raiz!= NULL) preordem(raiz->esquerda); preordem(raiz->direita); printf( %d, raiz->inf); 8.4 Inserção em Árvore Recursivamente void insere (no**raiz, int n) if(*raiz == NULL) (*raiz)=(struct no*)malloc(sizeof(struct no)); (*raiz)->chave = n; (*raiz)->esq = (*raiz)->dir = NULL; else if(n < (*raiz)->chave) insere(&(*raiz)->esq, n); else if(n > (*raiz)->chave) insere(&(*raiz)->dir, n); else printf( Número já existe!\n );

17 Impressão Seguindo o Modelo Em Ordem void emordem(no *raiz) if(raiz!= NULL) emordem(raiz->esq); printf( %d, raiz->chave); emordem(raiz->dir); // (*) Para mudar o pós-ordem basta inserir o printf na frente da 2ª chamada de função (*) 8.6 Percurso em Largura Segundo essa estratégia os nós são visitados em largura, isto é, por níveis Saída: 12, 8, 15, 5, 9, 20 Exercícios 1-) Implementar uma função que imprima os valores de uma árvore binária em largura. 2-) Função que retorne o maior valor de nó. 3-) Função que retorne a soma dos valores dos nós. 4-) Função que compare 2 árvores binárias e retorne 1 caso sejam iguais e 0 quando caso contrário. Dicas: Um critério para sabermos se é melhor um código iterativo ou recursivo é contar o número de recursões. Com recursão verifique antes de chamar a função se a árvore é vazia, pois isso facilita extremamente o trabalho.

18 17 9. TIPOS DE ÁRVORES BINÁRIAS 9.1 Árvore Binária vazia/completa Uma árvore binária vazia é aquela que não possui nenhum nó. Uma árvore binária completa é aquela que possui o número máximo de nós possível, considerando qualquer árvore binária de mesma altura. Raíz (NULL) Árvore Binária Vazia Árvore Binária 9.2 Árvore Estritamente Binária Uma árvore é estritamente binária quando todos seus nós são folhas ou possuem infinitos filhos. Algoritmo int estritbinaria(struct no*aux) if(arv->esq == NULL && arv->dir == NULL) return 1; else if (arv->esq == NULL arv->dir == NULL) return 0; else return (estritbinaria(arv->esq) && estritbinaria(arv->dir)); Uma árvore vazia deve ser tratada na função que a chama, pois não temos argumentos para tratá-la aqui. Ela deve ser indicada somente como vazia.

19 Árvores Binárias Similares Duas árvores binárias são similares quando possuírem a mesma estrutura, independentemente dos valores dos nós. 20 Árv 1 20 Árv Algoritmo: int similares(no*arv1, no*arv2) if(arv1 == NULL && arv2 == NULL) return 1; else if (arv1 == NULL arv2 == NULL) return 0; else return (similares(arv1->dir, arv2->dir) && similares(arv1->esq, arv2->esq); 9.4 Árvores Binárias Simétricas Duas árvores binárias são simétricas quando uma forma igual á imagem da outra refletida em um espelho. A Árv 1 A Árv 2 B B C D D C E E F F

20 Árvores para Avaliação de Expressões Nesse tipo de árvore, a raiz identifica o tipo de operador e os filhos identificam os operandos. As árvores binárias são úteis para a avaliação de expressões unárias (com um filho NULL) e binárias. + Raíz / * sobe. Percurso Em Ordem (ERD) 6/ *3 diretamente ((6)/((5)-(2))+((4)+((2)*(3))) inserindo ( quando desce um nível e ) quando Percurso Pós-Ordem (EDR) 652-/423*++ Percurso Pré-Ordem (RED) +/6-52+4* Árvores AND/OR São similares as discutidas anteriormente, mas com os operadores identificados na junção dos ramos da árvore. AND Raíz AND OR 1 1 AND 1 1 0

Métodos Computacionais. Árvores

Métodos Computacionais. Árvores Métodos Computacionais Árvores Árvores Vetores e Listas são ótimos para representar estrutura de dados lineares, mas não para modelar dados hierárquicos Exemplos de dados hierárquicos: sistema de arquivos

Leia mais

Linguagem C: Árvores Binarias

Linguagem C: Árvores Binarias Instituto de C Linguagem C: Árvores Binarias Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Tópicos Principais Introdução Árvores binárias Implementação

Leia mais

2ª Lista de Exercícios

2ª Lista de Exercícios Universidade Federal de Minas Gerais Departamento de Ciência da Computação Algoritmos e Estruturas de Dados II (Turmas M, N, W, F) 1º Semestre de 2012 Profs. Camilo Oliveira, Gisele Pappa, Ítalo Cunha,

Leia mais

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Estruturas de Dados Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Árvores Conceitos Árvores binárias Árvores binárias de pesquisa Árvores binárias balanceadas Árvores ESTRUTURAS

Leia mais

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2 FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO Projeto e Análise de Algoritmos II Lista de Exercícios 2 Prof. Osvaldo. 1. Desenvolva algoritmos para as operações abaixo e calcule a complexidade

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 14 Árvores Binárias Edirlei Soares de Lima Árvores Uma estrutura de dados do tipo árvore permite que dados sejam organizados de maneira hierárquica.

Leia mais

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 10 Árvores Binárias (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Árvores binárias Representação em C Ordens de percurso em árvores binárias Altura de uma árvore

Leia mais

EAD Árvore árvore binária

EAD Árvore árvore binária EAD Árvore árvore binária - Uma árvore binária é um conjunto finito de elementos (nodos) que pode ser vazio ou particionado em três subconjuntos: - raiz da árvore (elemento inicial, que é único); - subárvore

Leia mais

Figura 13.1: Um exemplo de árvore de diretório.

Figura 13.1: Um exemplo de árvore de diretório. 13. Árvores W. Celes e J. L. Rangel Nos capítulos anteriores examinamos as estruturas de dados que podem ser chamadas de unidimensionais ou lineares, como vetores e listas. A importância dessas estruturas

Leia mais

Busca. Pesquisa sequencial

Busca. Pesquisa sequencial Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um

Leia mais

Algoritmos e Estrutura de Dados II

Algoritmos e Estrutura de Dados II Universidade Federal do Vale do São Francisco Algoritmos e Estrutura de Dados II Professor: Marcelo Santos Linder E-mail: marcelo.linder@univasf.edu.br Ementa Árvores B, grafos e tabelas de hash: alocação

Leia mais

Estruturas de Dados Pilhas, Filas e Deques

Estruturas de Dados Pilhas, Filas e Deques Estruturas de Dados Pilhas, Filas e Deques Prof. Eduardo Alchieri Estruturas de Dados Pilhas Pilhas Lista LIFO (Last In, First Out) Os elementos são colocados na estrutura (pilha) e retirados em ordem

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Uma árvore binária é: uma árvore vazia; ou uma árvore onde qualquer

Leia mais

Algoritmos e Estruturas de Dados: Árvore Binária

Algoritmos e Estruturas de Dados: Árvore Binária Algoritmos e Estruturas de Dados: Árvore Binária Exemplo de árvore binária e são os filhos de Altura desta árvore é 4 é a raiz da sub-árvore esquerda de Rômulo Silva de Oliveira Departamento de Automação

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguinte propriedade: Para todo nó da árvore, se seu valor é X, então: Os nós pertencentes

Leia mais

Índice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial

Índice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial Índice i Índice Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial 1. A Estrutura Abstrata de Dados Lista... 1 1.1. Definição... 1 1.2. Implementação de Listas utilizando armazenamento

Leia mais

ESTRUTURA DE DADOS PILHA

ESTRUTURA DE DADOS PILHA ESTRUTURA DE DADOS PILHA CONCEITO DE PILHAS - Pilhas são listas lineares onde a inserção de um novo item ou a remoção de um item já existente se dá em uma única extremidade, no topo. Pilha vazia Insere(A)

Leia mais

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Breve Histórico A linguagem de programação C foi criada na década de 70, por Dennis Ritchie, que a implementou,

Leia mais

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Pilhas A estrutura de dados Pilha emula a forma de organização de objetos intuitiva que é utilizada diariamente nos mais diversos contextos da vida humana. Containeres são empilhados e desempilhados diariamente

Leia mais

INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15 INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15 1. Um número racional é expresso por dois inteiros: um numerador e um denominador (este último diferente de zero!). Implemente um TAD para representar números

Leia mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Pilhas Filas Deques Pilhas,,f filas e deques Vimos que as listas lineares admitem inserção e eliminação

Leia mais

Estruturas de Dados Aula 15: Árvores 17/05/2011

Estruturas de Dados Aula 15: Árvores 17/05/2011 Estruturas de Dados Aula 15: Árvores 17/05/2011 Fontes Bibliográficas Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos (Nivio Ziviani): Capítulo

Leia mais

Listas Duplamente Encadeadas

Listas Duplamente Encadeadas Listas Duplamente Encadeadas! quando for preciso seguir a seqüência de elementos em ambos os sentidos! cada nó possui dois ponteiros: ant e prox ant prox a b c d Início Fim 1 Listas Duplamente Encadeadas

Leia mais

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é

Leia mais

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA FUNDAÇÃO EDUCACIONAL DE ITUIUTABA ASSOCIADA À UNIVERSIDADE DO ESTADO DE MINAS GERAIS CURSO DE SISTEMA DE INFORMAÇÃO PILHA E FILA Prof. Walteno Martins Parreira Júnior www.waltenomartins.com.br waltenomartins@yahoo.com

Leia mais

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 1 PONTEIROS Prof. Yandre Maldonado e Gomes da Costa PONTEIROS Prof. Yandre Maldonado - 2 Ponteiro é uma variável que possui o endereço de outra variável; É um poderoso recurso

Leia mais

1. Introdução... 1 1.1. Definição... 1 1.2. Conceitos relacionados... 2

1. Introdução... 1 1.1. Definição... 1 1.2. Conceitos relacionados... 2 Índice i Índice Capítulo 4 Estrutura de Dados não sequencial com armazenamento não sequencial ( Árvore ) 1. Introdução... 1 1.1. Definição... 1 1.2. Conceitos relacionados... 2 2. Árvores binárias... 2

Leia mais

Programas operam sobre dados. Dados são relacionados e possuem estrutura. Como representar e manipular dados em um computador

Programas operam sobre dados. Dados são relacionados e possuem estrutura. Como representar e manipular dados em um computador Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar e manipular dados em um computador Para representar um baralho precisamos: Representar cartas: naipe e valor struct

Leia mais

ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira

ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira ÁRVORES ED2: MSc. Daniele Oliveira 2 Introdução Filas, pilhas» Estruturas Lineares Um dos exemplos mais significativos de estruturas não-lineares são

Leia mais

Estruturas de Dados Aula 11: TAD Pilha 09/05/2011

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

Leia mais

Pesquisa em Memória Primária. Prof. Jonas Potros

Pesquisa em Memória Primária. Prof. Jonas Potros Pesquisa em Memória Primária Prof. Jonas Potros Pesquisa em Memoria Primária Estudo de como recuperar informação a partir de uma grande massa de informação previamente armazenada. A informação é dividida

Leia mais

PROGRAMAÇÃO II 4. ÁRVORE

PROGRAMAÇÃO II 4. ÁRVORE 4. ÁRVORE PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma árvore impõe uma estrutura hierárquica em uma coleção de itens. Um exemplo familiar é a árvore genealógica. Árvores despontam de forma natural em

Leia mais

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos Complexidade de Algoritmos Envolvendo Estruturas de Dados Elementares Prof. Osvaldo Luiz de Oliveira Estas anotações devem ser complementadas por apontamentos em aula. Vetor

Leia mais

Estruturas de Dados I

Estruturas de Dados I UFES - Curso de verão 2011 Estruturas de Dados I Profa. Juliana Pinheiro Campos jupcampos@gmail.com Árvores binárias de busca (ou São árvores projetadas para dar suporte a operações de busca de forma eficiente.

Leia mais

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros

Leia mais

Pilhas. Profa Morganna Diniz

Pilhas. Profa Morganna Diniz Pilhas Profa Morganna Diniz Pilhas Geralmente pilhas são úteis em situações em que dados devem ser recuperados em ordem inversa a do armazenamento É uma estrutura de dados linear que permite acesso por

Leia mais

Pesquisa em Memória Primária. Prof. Jonas Potros

Pesquisa em Memória Primária. Prof. Jonas Potros Pesquisa em Memória Primária Prof. Jonas Potros Procedimento para Inserir na Árvore Binária Critérios: Atingir um ponteiro nulo em um processo de pesquisa significa uma pesquisa sem sucesso. O ponteiro

Leia mais

Estruturas de Dados Árvores

Estruturas de Dados Árvores Estruturas de Dados Árvores Prof. Eduardo Alchieri Árvores (introdução) Importância de estruturas unidimensionais ou lineares (vetores e listas) é inegável Porém, estas estruturas não são adequadas para

Leia mais

Árvores. Algoritmos e Estruturas de Dados 2005/2006

Árvores. Algoritmos e Estruturas de Dados 2005/2006 Árvores Algoritmos e Estruturas de Dados 2005/2006 Árvores Conjunto de nós e conjunto de arestas que ligam pares de nós Um nó é a raiz Com excepção da raiz, todo o nó está ligado por uma aresta a 1 e 1

Leia mais

EAD Árvore - representação usando listas ligadas

EAD Árvore - representação usando listas ligadas 4.1. Definição É uma árvore binária em que os seus nodos têm associado uma chave, que - determina a sua posição de colocação na árvore e - obedece às seguintes regras: a chave de um nodo é - maior do que

Leia mais

ESTRUTURA DE DADOS DCC013

ESTRUTURA DE DADOS DCC013 ESTRUTURA DE DADOS DCC013 Árvores Pesquisa sequencial Preliminares Elementos pesquisados sucessivamente Comparação determina se o elemento foi encontrado ou não Exemplo: buscar 4 (Arrays e lista encadeada)

Leia mais

Estrutura de Dados Pilha (Stack)

Estrutura de Dados Pilha (Stack) Estrutura de Dados Pilha (Stack) Estrutura de Dados que corresponde a uma lista sequencial com a propriedade seguinte: LIFO O primeiro elemento a entrar é o último a sair ( Last in First Out ) Operações

Leia mais

Aula 3 Alocação Dinâmica

Aula 3 Alocação Dinâmica Aula 3 Alocação Dinâmica Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas de Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações

Leia mais

EAD Fila. - algumas operações realizam-se na frente/cabeça e outras na cauda da Fila

EAD Fila. - algumas operações realizam-se na frente/cabeça e outras na cauda da Fila EAD Fila - os seus elementos são processados por ordem de chegada: - o primeiro elemento a entrar na Fila é o primeiro a sair - FIFO ( First In First Out ). - algumas operações realizam-se na frente/cabeça

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Uma Árvore Binária de Busca T (ABB) ou Árvore Binária de Pesquisa é tal que ou T = 0 e a árvore é dita vazia ou seu nó contém uma chave e: 1. Todas as chaves da sub-árvore esquerda

Leia mais

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipo de dados, tipo abstrato de dados, estruturas de dados Termos parecidos, mas com significados diferentes Tipo de dado Em linguagens de programação

Leia mais

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais:

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais: Estruturas de Dados Pilhas Prof. Ricardo J. G. B. Campello Créditos Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais: disponíveis em http://ww3.datastructures.net/ cedidos

Leia mais

Primeiro Curso de Programação em C 3 a Edição

Primeiro Curso de Programação em C 3 a Edição Edson Luiz França Senne Primeiro Curso de Programação em C 3 a Edição Visual Books Sumário Prefácio da Terceira Edição 9 Prefácio da Primeira Edição 11 Aula 1 13 Regras de sintaxe de uma linguagem de programação...

Leia mais

Universidade Estadual de Mato Grosso do Sul - Curso de Ciência da Computação Disciplina: Estruturas de Dados Profª. Raquel Marcia Müller

Universidade Estadual de Mato Grosso do Sul - Curso de Ciência da Computação Disciplina: Estruturas de Dados Profª. Raquel Marcia Müller 1 Listas Lineares Dentre as estruturas de dados não primitivas, as listas lineares são as de manipulação mais simples. Uma lista linear agrupa informações referentes a um conjunto de elementos que, de

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Pesquisa Sequencial e Binária

Pesquisa Sequencial e Binária Pesquisa Sequencial e Binária Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 20 Algoritmos e Estruturas de Dados I Pesquisa em Memória Primária Introdução - Conceitos Básicos Pesquisa Sequencial

Leia mais

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1 Estrutura de Dados Introdução a Ponteiros Prof. Gerson Borges Estrutura de Dados I 1 Sumário è Explicação da importância do planejamento de ensino; è Métodos e técnicas que iremos trabalhar durante o semestre;

Leia mais

Árvore Binária de Busca

Árvore Binária de Busca Árvore Binária de Busca 319 Árvore Binária de Busca! construída de tal forma que, para cada nó:! nós com chaves menores estão na sub-árvore esquerda! nós com chaves maiores (ou iguais) estão na subárvore

Leia mais

Introdução a POO. Introdução a Linguagem C++ e POO

Introdução a POO. Introdução a Linguagem C++ e POO Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes

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 Árvores Binárias 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 II Disciplina: Linguagem

Leia mais

ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor.

ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor. PUC-Rio Departamento de Informática Período: 2015.1 Horário: 2as-feiras e 4as-feiras de 17-19 30 de março de 2015 ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) 1 a Lista de Exercícios 1. Lista (a) Seja um TAD

Leia mais

struct LISTA item quant

struct LISTA item quant UNIVERSIDADE SÃO JUDAS TADEU ESTRUTURA DE DADOS - PROF. H. Senger IMPLEMENTAÇÃO DE LISTAS COM VETORES A implementação de listas utilizando vetores é simples. Existe apenas uma pequena questão, com relação

Leia mais

PROGRAMA DE DISCIPLINA

PROGRAMA DE DISCIPLINA PROGRAMA DE DISCIPLINA Disciplina: Introdução à Programação Carga horária total: 60 Carga horária teórica: 0 Carga horária prática: 60 Código da Disciplina: CCMP0041 Período de oferta: 2010.2 Turma: CA

Leia mais

10. Listas Encadeadas

10. Listas Encadeadas 10. Listas Encadeadas W. Celes e J. L. Rangel Para representarmos um grupo de dados, já vimos que podemos usar um vetor em C. O vetor é a forma mais primitiva de representar diversos elementos agrupados.

Leia mais

17 - Funções e Procedimentos em C Programação Modular

17 - Funções e Procedimentos em C Programação Modular 17 - Funções e Procedimentos em C Programação Modular Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante 17

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Algoritmos e Estrutura de Dados. Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 7 Estrutura de Dados: Listas Prof. Tiago A. E. Ferreira Introdução Um das formas mais usadas para se manter dados agrupados é a lista Lista de compras, itens de estoque,

Leia mais

Estruturas de Dados. Listas Dinâmicas Duplamente Encadeadas & Variantes. Listas Duplamente Encadeadas

Estruturas de Dados. Listas Dinâmicas Duplamente Encadeadas & Variantes. Listas Duplamente Encadeadas Estruturas de Dados Listas Dinâmicas Duplamente Encadeadas & Variantes Prof. Ricardo J. G. B. Campello Listas Duplamente Encadeadas Listas simplesmente encadeadas são ineficientes para realizar certas

Leia mais

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Árvores Existe uma ampla variedade de dados que são comumente organizados sob a forma de árvores hierárquicas utilizadas recorrentemente em nosso dia a dia. Exemplos são a organização administrativa de

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais

Leia mais

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II Pesquisa em Memória Primária Algoritmos e Estruturas de Dados II Pesquisa em Memória Primária Pesquisa: Recuperação de informação em um grande volume de dados Informação é dividida em registros e cada

Leia mais

Alocação dinâmica de memória

Alocação dinâmica de memória Alocação dinâmica de memória Jander Moreira 1 Primeiras palavras Na solução de problemas por meio algoritmos ou programas, é comum surgir a necessidade de manter todo o conjunto de dados a ser processado

Leia mais

Recursividade. Aula 9

Recursividade. Aula 9 Recursividade Aula 9 Em matemática vários objetos são definidos apresentando-se um processo que os produz. Ex PI (circunferência/diâmetro) Outra definição de um objeto por um processo é o fatorial de um

Leia mais

Expressões. Prof. Alberto Costa Neto alberto@ufs.br. Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Expressões. Prof. Alberto Costa Neto alberto@ufs.br. Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Expressão é uma frase de um programa que ao ser avaliada retorna um valor Tipos Literais Agregados Chamadas de Função

Leia mais

Experimentos com a memória cache do CPU

Experimentos com a memória cache do CPU Experimentos com a memória cache do CPU Alberto Bueno Júnior & Andre Henrique Serafim Casimiro Setembro de 2010 1 Contents 1 Introdução 3 2 Desvendando o cache 3 2.1 Para que serve o cache?.....................

Leia mais

Introdução à Programação. Recursão

Introdução à Programação. Recursão Introdução à Programação Recursão Recursão decoração Substantivo feminino. 1.Ato ou efeito de decorar decorar Verbo transitivo direto. 1.Guarnecer com adorno(s); dispor formas e cores em; ornamentar, embelezar;

Leia mais

-Estrutura linear de acesso seqüencial que ordena seus elementos pela seqüência cronológica de sua entrada;

-Estrutura linear de acesso seqüencial que ordena seus elementos pela seqüência cronológica de sua entrada; FILAS (Queues) -Estrutura linear de acesso seqüencial que ordena seus elementos pela seqüência cronológica de sua entrada; -Estrutura FIFO (First In First Out) a ordem de saída é a mesma ordem de entrada

Leia mais

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu. Programação Estruturada Linguagem C Fundamentos da Linguagem Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br Sumário Estrutura Básica Bibliotecas Básicas Tipos de Dados Básicos Variáveis/Declaração

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas

ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Departamento de Computação ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas Luiz Henrique Santos

Leia mais

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada

Leia mais

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10 1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...

Leia mais

Analise o código abaixo:

Analise o código abaixo: Recursão - introdução Analise o código abaixo: 1 # include 2 # include 3 int Fatorial ( int x) 4 int k, s =1; for (k =0;k

Leia mais

Filas: conceitos e implementações

Filas: conceitos e implementações Estrutura de Dados I Filas: conceitos e implementações Cesar Rocha cesar@pontoweb.com.br 1 Objetivos Explorar os conceitos fundamentais acerca do uso de filas utilizando a linguagem C Organização e implementação,

Leia mais

Métodos Computacionais. Fila

Métodos Computacionais. Fila Métodos Computacionais Fila Definição de Fila Fila é uma estrutura de dados dinâmica onde: Inserção de elementos se dá no final e a remoção no início O primeiro elemento que entra é o primeiro que sai

Leia mais

Tipo de Dados em Linguagem C

Tipo de Dados em Linguagem C Tipo de Dados em Linguagem C Principais tipos de dados em C int : tipo de dados inteiros (exemplo: 1, -3, 100, -9, 18, etc.) float : tipo de dados reais (exemplo: 1.33, 3.14, 2.00, -9.0, 1.8, etc.) Ocupa

Leia mais

BC1424 Algoritmos e Estruturas de Dados I. Aula 16: Árvores (introdução) Prof. Jesús P. Mena-Chalco. jesus.mena@ufabc.edu.br

BC1424 Algoritmos e Estruturas de Dados I. Aula 16: Árvores (introdução) Prof. Jesús P. Mena-Chalco. jesus.mena@ufabc.edu.br BC1424 Algoritmos e Estruturas de Dados I Aula 16: Árvores (introdução) Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 1Q-2015 1 2 Árvores Uma árvore é uma estrutura de dados mais geral que uma lista

Leia mais

Aula 1 Tipo Abstrato de Dados

Aula 1 Tipo Abstrato de Dados Aula 1 Tipo Abstrato de Dados Luiz Chaimowicz e Raquel O. Prates Livro Projeto de Algoritmos Capítulo 1 2009-1 O que é um algoritmo? O que é um programa? Algoritmos Sequência de ações executáveis para

Leia mais

Algoritmos de pesquisa. Tabelas de dispersão/hash

Algoritmos de pesquisa. Tabelas de dispersão/hash Algoritmos de pesquisa Tabelas de dispersão/hash Introdução Motivação: Considerar o problema de pesquisar um determinado valor num vetor (array). Se o vetor não está ordenado, a pesquisa requer O(n) de

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 Árvores Genéricas 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 II Disciplina: Linguagem

Leia mais

Análises Geração RI (representação intermediária) Código Intermediário

Análises Geração RI (representação intermediária) Código Intermediário Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Introdução aos Algoritmos e Estruturas de Dados 2 o Teste - A Ano lectivo: 2010/2011 2 o Semestre RESOLUÇÃO DO 2 o TESTE Grupo I (2.0 + 2.5 + 2.0 = 6.5 val.) I.a) Considere os tipos enum ocasiao e Presente

Leia mais

Desafios de Programação TCC-00.254 Turma A-1

Desafios de Programação TCC-00.254 Turma A-1 Desafios de Programação TCC-00.254 Turma A-1 Conteúdo Estruturas de Dados Elementares Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2015.1/tcc-00.254

Leia mais

Tipos de Dado Abstrato: Listas, Filas e Pilhas

Tipos de Dado Abstrato: Listas, Filas e Pilhas Tipos de Dado Abstrato: Listas, Filas e Pilhas Estruturas de Dados Prof. Vilson Heck Junior Introdução Tradicionalmente conhecidos como Tipos de Dado Abstrato, são algumas Estruturas de Dados básicas e

Leia mais

Pilhas Filas e Listas

Pilhas Filas e Listas Pilhas Filas e Listas Sumário Pilha: interface, aplicações e implementação Fila: interface, aplicações e implementação Lista Ligada: interface, aplicações e implementação Pilha Estrutura LIFO (last in,

Leia mais

Web site. Objetivos gerais. Introdução. http://www.inf.ufes.br/~pdcosta/ensino/2009-1-estruturas-de-dados. Profa. Patrícia Dockhorn Costa

Web site. Objetivos gerais. Introdução. http://www.inf.ufes.br/~pdcosta/ensino/2009-1-estruturas-de-dados. Profa. Patrícia Dockhorn Costa Web site http://www.inf.ufes.br/~pdcosta/ensino/2009-1-estruturas-de-dados Estruturas de Dados Aula 1: Introdução e conceitos básicos Profa. Patrícia Dockhorn Costa Email: pdcosta@inf.ufes.br 01/03/2010

Leia mais

PROGRAMA DE DISCIPLINA

PROGRAMA DE DISCIPLINA PROGRAMA DE DISCIPLINA Disciplina: INTRODUÇÃO À PROGRAMAÇÃO Carga horária total: 60 h Carga horária teórica: 30 h Carga horária prática: 30 h Código da Disciplina: CCMP0041 Período de oferta: 2015.2 Turma:

Leia mais

De uma forma ampla, o profissional egresso deverá ser capaz de desempenhar as seguintes funções:

De uma forma ampla, o profissional egresso deverá ser capaz de desempenhar as seguintes funções: PLANO DE ENSINO 1. Identificação Curso: Tecnologia em Desenvolvimento de Software Disciplina: Estrutura de Dados Professor: Msc. Tiago Eugenio de Melo CPF: Regime de Trabalho: 40h CH. Semestral: 100h Siape:

Leia mais

PROGRAMAÇÃO II 3. FILA DINÂMICA

PROGRAMAÇÃO II 3. FILA DINÂMICA 3. FILA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma fila é um tipo especial de lista na qual todas as inserções são feitas sempre depois do fim e as deleções no início. Por isso também recebe

Leia mais