Algoritmos e Estruturas de Dados I

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

Download "Algoritmos e Estruturas de Dados I"

Transcrição

1 Algoritmos e Estruturas de Dados I Aula 09 Revisão + Simulado Prof. Jesús P. Mena-Chalco [email protected] 1Q

2 Vetores 2

3 Vetores 3

4 Vetores vetor 4

5 Vetores... vetor... 5

6 Ponteiros 6

7 Processo na memória INSTRUÇÕES PILHA (STACK) Armazena o código compilado (na linguagem máquina) Armazena as variáveis ao longo da execução do programa. Espaço de memória principal gerenciado pelo SO. [~bytes] [~Mbytes] [~Toda a memória RAM] Alocação estática int x; double M[10][20]; char *c; HEAP Alocação dinâmica double M = malloc(...); 7

8 Ponteiros? Processo na memória INSTRUÇÕES PILHA (STACK) HEAP Em Java e Python o uso é transparente. Não precisa se preocupar de alocar e liberar memória 8

9 Fenômeno: Stack Overflow Processo na memória INSTRUÇÕES PILHA (STACK) HEAP 9

10 Endereços A memória de qualquer computador (arquitetura de Von Neumann) é uma sequência de bytes. Cada byte armazena um de 256 possíveis valores. Os bytes são numerados sequencialmente e o número de um byte é o seu endereço (*) Fonte: 10

11 Endereços Em c o endereço de um objeto é dado pelo operador & Se x é uma variável, então &x é o seu endereço int s = -999 int* p = &s p s 0x x x89422 p = 0x89422 &p = 0x60001 *p = p aponta para a s p é o endereço de s p aponta a s *p é o mesmo que escrever s 11

12 Structs 12

13 Linguagem C: Tipos de dados Tipos de dados primários. Tipos de dados derivados. Tipos definidos pelo usuário. (*) Fonte: 13

14 Por que precisamos saber de structs? Em determinadas aplicações é necessário associar diferentes dados a um objeto. Objeto: Ponto em 3D x y z Ponto 1 Ponto 2 Ponto 3 Ponto 4 Ponto

15 Por que precisamos saber de structs? Podemos usar 3 vetores para armazenar as posições de cada ponto no espaço 3D Vx Vy Vz void plot3d(double Vx[], double Vy[], double Vz[]) {... } 15

16 Por que precisamos saber de structs? Podemos usar 7 vetores para armazenar as posições de cada ponto no espaço 3D e a sua cor RGB Vx Vy Vz Vr Vg Vb Va void plot3d(double Vx[], double Vy[], double Vz[], ) {... } 16

17 Por que precisamos saber de structs? Por que não simplificar? Vx Vy void plot3d(struct Ponto3D V[], int n) {... } Vz Vr Vg Vb Va As structs fornecem uma forma simples para programar 17

18 Estruturas Uma estrutura para armazenar um ponto 3D Uma estrutura para armazenar um ponto 3D e sua cor (RGBA) 18

19 Maior segmento de reta 2D Crie um programa, na linguagem C, em que dada uma sequência de n pares de números reais, apresente o comprimento do maior segmento de reta. Deve ser obrigatoriamente utilizada a estrutura: struct Ponto2D { double x; double y; }; Exemplo de entrada: Saída: 5.66 Apresente apenas os 2 primeiros digitos após o ponto decimal Obs.: Não use colchetes. Use apenas ponteiros. 19

20 Exemplo de segmentos de reta Maior segmento 20

21 Maior segmento de reta 2D pow(2,2) sqrt(2) 21

22 Maior segmento de reta 2D 22

23 Área do Menor Triângulo Crie um programa, na linguagem C, em que dada uma sequência de n (n>=3) pares de números reais, apresente a área do menor triângulo composto por 3 pontos. Deve ser obrigatoriamente utilizada a estrutura: struct Ponto2D { double x; double y; }; Exemplo de entrada: Saída: Apresente apenas os 2 primeiros digitos após o ponto decimal Obs.: Não use colchetes. Use apenas ponteiros. 23

24 Exemplo de triângulos para 4 pontos 24

25 Área de um triângulo 25

26 Área do Menor triângulo 26

27 Área do Menor triângulo 27

28 Listas 28

29 Definição Suporemos que os objetos armazenados nos nós são do tipo int. A estrutura de nós pode ser definida como:

30 Imprimir uma lista (rec) 30

31 Busca por um elemento p r Busca (dado um elemento) x x O(n) Se o elemento não existir, na lista, a função devolve NULL. 31

32 Outros tipos de listas encadeadas: Lista circular p A última célula aponta para a primeira

33 Outros tipos de listas encadeadas: Lista duplamente encadeada q p NULL 75 NULL Cada célula contém o endereço da célula anterior e o da seguinte 33

34 4) Eliminar elemento em uma posição Dado um ponteiro para o primeiro nó de uma lista ligada, e um número inteiro p. Elimine da lista o nó que está na posição p da lista. A função deve devolver um ponteiro ao primeiro elemento da lista. Assuma que a posição p sempre será uma posição válida. Uma posição igual a 0 indica o início da lista. Uma posição igual a 1 indica o nó seguinte ao início da lista e assim por diante. O ponteiro dado pode ser nulo, o que significa que a lista inicial está vazia. Obs.: Deve implementar apenas a função eliminarelementoemumaposicao Entrada Saída Descrição Na lista ligada de 5 nós, composta pelos elementos: Deve ser eliminado o elemento da posição 2. Resultando a lista:

35 4) Eliminar elemento em uma posição 35

36 5) Inverter uma lista ligada Dado um ponteiro para o primeiro nó de uma lista ligada, crie uma função que permita inverter a ordem na lista. Isto é, as ligações devem ser invertidas. O último elemento da lista deve apontar a NULL. A função deve devolver um ponteiro ao primeiro elemento da lista. O ponteiro dado pode ser nulo, o que significa que a lista inicial está vazia. Obs.: Deve implementar apenas a função inverterlistaligada Entrada Saída Descrição A lista ligada de 5 elementos, composta por: NULL Deve ser transformada na lista: NULL 36

37 5) Inverter uma lista ligada 37

38 6) Comparar duas listas ligadas Dados dois ponteiros para os primeiros nós de duas listas ligadas, crie uma função que permita comparar os dados nos nós das listas para verificar se eles são iguais. As listas são iguais apenas se tiverem o mesmo número de nós e os nós correspondentes tiverem os mesmos dados. O ponteiro dado pode ser nulo, o que significa que a lista está vazia. Obs.: Deve implementar apenas a função compararlistasligadas Entrada Saída Descrição Dadas as duas listas: Lista 1: NULL Lista 2: 11 NULL A resposta deve ser 0 dado que são listas diferentes. Dadas as duas listas: Lista 1: NULL Lista 2: NULL A resposta deve ser 1 dado que são listas iguais. 38

39 6) Comparar duas listas ligadas 39

40 7) Valor em uma determinada posição Dado um ponteiro para o primeiro nó de uma lista ligada e um inteiro que representa uma posição p, crie uma função que permita obter o valor do nó dada na posição p, contando de trás para frente. Assuma que a posição p sempre será uma posição válida. Uma posição igual a 0 indica o último elemento da lista. Uma posição igual a 1 indica o penúltimo e assim por diante. O ponteiro dado pode ser nulo, o que significa que a lista está vazia. Obs.: Deve implementar apenas a função valoremposicao Entrada Saída Descrição Na lista ligada de 5 elementos, composta por: NULL O elemento na posição 1 (de trás para frente) é 44 40

41 7) Valor em uma determinada posição 41

42 8) Eliminar elementos duplicados Dado um ponteiro para o primeiro nó de uma lista ligada com elementos organizados na ordem crescente. Crie uma função que permita eliminar o mínimo dos nós para que a lista não contenha nenhum valor repetido. A função deve devolver um ponteiro ao primeiro elemento da lista. O ponteiro dado pode ser nulo, o que significa que a lista está vazia. Obs.: Deve implementar apenas a função eliminarelementosduplicados Entrada Saída Descrição A lista ligada de 7 elementos, composta por: NULL Deve ser transformada na lista: NULL 42

43 8) Eliminar elementos duplicados 43

44 9) Intercalar duas listas ligadas Dados dois ponteiros para os primeiros nós de duas listas ligadas, crie uma função que permita intercalar os dados nos nós das listas de tal forma a criar uma (nova) terceira lista ligada mas organizada na forma crescente. Os dados em ambas as listas iniciais estão organizados na sua forma crescente. O ponteiro dado pode ser nulo, o que significa que a lista está vazia. Obs.: Deve implementar apenas a função intercalarlistasligadas Entrada Saída Descrição Dadas as duas listas: Lista 1: NULL Lista 2: NULL Dadas as duas listas: Lista 1: 99 NULL Lista 2: 99 NULL O resultado de intercalar as duas listas deve ser: NULL O resultado de intercalar as duas listas deve ser: NULL 44

45 9) Intercalar duas listas ligadas 45

46 10) Segundo menor elemento Dado um ponteiro para o primeiro nó de uma lista ligada. Crie uma função que permita devolver o valor do segundo menor elemento presente na lista ligada. Considere que a lista inicial sempre terá no mínimo 2 elementos. Obs.: Deve implementar apenas a função segundomenorelemento Entrada Saída Descrição A lista ligada de 5 elementos, composta por: NULL Tem como segundo menor valor: 33 A lista ligada de 3 elementos, composta por: NULL Tem como segundo menor valor: 44 46

47 10) Segundo menor elemento 47

48 Resumo Listas Listas com com arranjos arranjos ---- Listas Simples Simples para para usar usar Alocação Alocação em em bloco bloco contínuo contínuo Acesso Acesso aa um um item item em em tempo tempo constante constante -- Requer Requer saber saber aa quantidade quantidade de de itens itens previamente previamente (para (para alocação) alocação) -- Inserção/Remoção Inserção/Remoção requer requer deslocamentos deslocamentos -- Expansão Expansão custosa custosa (realocar (realocar ee copiar) copiar) Listas Listas ligadas/encadeadas/enlaçadas ligadas/encadeadas/enlaçadas -- Não Não requer requer conhecer conhecer aa quantidade quantidade de de itens itens previamente previamente -- Inserção Inserção ee remoção remoção não não requer requer deslocamentos deslocamentos -- Acesso Acesso aa uma uma posição posição necessita necessita percorrer percorrer aa lista lista -- Memória Memória extra extra para para os os ponteiros ponteiros

49 listas e árvores 49

50 Vetor (array): Elementos contiguos na memória. Todos do mesmo tipo de dado Listas ligadas: Elementos não necessariamente contiguos na memória. Podem ter atributos diferentes. Árvores: Elementos não necessariamente contiguos na memória. Podem ter atributos diferentes. 50

51 Structs Para uma lista ligada: Para uma lista duplamente ligada e também para uma árvore em que cada nó tenha no máximo 2 ligações: 51

52 Varredura Como seria a varredura e-r-d? 52

53 Varredura Na figura abaixo, os nós estão numeradas na ordem da varredura e-r-d

54 Custos de algoritmos 54

55 O número de comparações, no algoritmos, depende dos inteiros registrados no vetor. No melhor caso: o elemento está na primeira posição No pior caso: o elemento está na última posição ou não está no vetor. No caso médio? 55

56 Busca de um elemento Seja f uma função de complexidade tal que f(n) é o número de elementos consultados. Melhor caso: Quando o elemento procurado é o primeiro consultado Pior caso: Quando o elemento procurado é o último consultado ou Não está presente no vetor Caso médio: 56

57 (*) Fonte: 57

58 58

59 Simulado 59

60 Q1 (a) Devolve a diferença entre o maior e o menor valor presente no vetor V. (b) Para qualquer caso o número de comparações é proporcional a 2n. 60

61 Q2 61

62 Q3 62

63 Q4 63

Aula 13: Listas encadeadas (estruturas lineares)

Aula 13: Listas encadeadas (estruturas lineares) Algoritmos e Estruturas de Dados I Aula 13: Listas encadeadas (estruturas lineares) Prof. Jesús P. Mena-Chalco [email protected] 1Q-2017 1 Estruturas (alguns autores usam o termo registro) 2 Linguagem

Leia mais

Aula 07: Algoritmos de busca e Listas encadeadas

Aula 07: Algoritmos de busca e Listas encadeadas BC1424 Algoritmos e Estruturas de Dados I Aula 07: Algoritmos de busca e Listas encadeadas Prof. Jesús P. Mena-Chalco [email protected] 1Q-2016 1 Busca de um elemento 2 Exemplo: Busca de um elemento

Leia mais

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta Algoritmos e Estruturas de Dados Prof. Marcelo Zorzan Profa. Melissa Zanatta Assuntos da Aula Alocação de Memória Alocação estática de memória Alocação dinâmica de memória Malloc, Calloc, Free, Realloc

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

Estruturas de Dados I

Estruturas de Dados I Estruturas de Dados I Rodrigo Porfírio da Silva Sacchi [email protected] 3410-2075 Aula 6: Listas Encadeadas e Alocação Dinâmica Listas Encadeadas e Alocação Dinâmica Alocação Seqüencial versus

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

Estrutura de Dados. Aula 07 Alocação Dinâmica

Estrutura de Dados. Aula 07 Alocação Dinâmica Estrutura de Dados Aula 07 Alocação Dinâmica 2 ALOCAÇÃO DINÂMICA Existem três modos de reservar espaço de memória para o armazenamento de informações: 1ª - através do uso de variáveis globais (e estáticas).

Leia mais

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

Programação Estruturada Prof. Rodrigo Hausen  Organização e Gerenciamento de Memória Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];

Leia mais

Estruturas de Dados Estruturas de Dados Fundamentais

Estruturas de Dados Estruturas de Dados Fundamentais Estruturas de Dados Estruturas de Dados Fundamentais Prof. Eduardo Alchieri Estruturas de Dados Fundamentais Todos os tipos abstratos de dados (pilhas, filas, deques, etc.) podem ser implementados usando

Leia mais

LINGUAGEM C: ALOCAÇÃO DINÂMICA

LINGUAGEM C: ALOCAÇÃO DINÂMICA LINGUAGEM C: ALOCAÇÃO DINÂMICA Prof. André Backes DEFINIÇÃO Sempre que escrevemos um programa, é preciso reservar espaço para as informações que serão processadas. Para isso utilizamos as variáveis Uma

Leia mais

ALOCAÇÃO DINÂMICA DE MEMÓRIA

ALOCAÇÃO DINÂMICA DE MEMÓRIA INE5408 Estruturas de Dados Semestre 2008/1 Prof. Leandro J. Komosinski ALOCAÇÃO DINÂMICA DE Memória de Computador 1 byte = 8 bits (ex.: 00100110) 1 KB = 1024 bytes 1 MB = 1024 KB 1 GB = 1024 MB Meu computador

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

Aula 02: Custos de um algoritmo e funções de complexidade

Aula 02: Custos de um algoritmo e funções de complexidade MCTA028 Programação Estruturada Aula 02: Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco [email protected] 3Q-20106 1 Linguagem C: Tipos de dados 2 Linguagem C: Tipos

Leia mais

Modulo 12: alocação dinâmica de memória

Modulo 12: alocação dinâmica de memória PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 12: alocação dinâmica de memória Aura - Erick [email protected], [email protected] Roteiro porque e como utilizar a alocação dinâmica funções: malloc (

Leia mais

Questão 1: O histograma deve ser: [0, 1, 4, 2, 0, 3, 0,, 0, 2] Exemplo: Para a matriz

Questão 1: O histograma deve ser: [0, 1, 4, 2, 0, 3, 0,, 0, 2] Exemplo: Para a matriz MAC122 rincípios de Desenvolvimento de Algoritmos Lista de exercícios 01 rof.: aulo Miranda Instituto de Matemática e Estatística (IME) Universidade de São aulo (US) Alocação Dinâmica & Matrizes Questã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

Alocação dinâmica de Memória

Alocação dinâmica de Memória Alocação dinâmica de Memória Vetores e Arrays A variável vetor é uma variável que armazena outras variáveis, no caso tem que ser do mesmo tipo. Exemplo Criar um cont Declarar um vet com o tamanho Laç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

Algoritmos e Estruturas de Dados I

Algoritmos e Estruturas de Dados I Algoritmos e Estruturas de Dados I Aula 19: - Comparação empírica de algoritmos de ordenação - Árvores Prof. Jesús P. Mena-Chalco [email protected] 1Q-2016 1 Comparação empírica de algoritmos de

Leia mais

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic [email protected] Instituto de

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação

Leia mais

LINGUAGEM C: PONTEIROS

LINGUAGEM C: PONTEIROS LINGUAGEM C: PONTEIROS Prof. André Backes DEFINIÇÃO Variável É um espaço reservado de memória usado para guardar um valor que pode ser modificado pelo programa; Ponteiro É um espaço reservado de memória

Leia mais

Linguagem C: Listas Encadeadas

Linguagem C: Listas Encadeadas Prof. Paulo R. S. L. Coelho [email protected] 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

Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011

Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011 Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores 14/03/2011 e 16/03/2011 Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto

Leia mais

1. Se v é um vetor, qual a diferença conceitual entre as expressões v[70] e v+70? [2 ponto]

1. Se v é um vetor, qual a diferença conceitual entre as expressões v[70] e v+70? [2 ponto] Universidade Federal do ABC Avaliação: Prova 01 Disciplina: BC1424 - Algoritmos e Estruturas de Dados I Turma: Noturno Professor: Jesús P. Mena-Chalco Data: 15/03/2016 Nome completo: RA: Instruções para

Leia mais

A linguagem C permite dois tipos de alocação de memória: Alocação estática e alocação dinâmica.

A linguagem C permite dois tipos de alocação de memória: Alocação estática e alocação dinâmica. Alocação de Memória Todo programa precisa utilizar memória para ser executado. Quando um programa inicia sua execução, ele começa a solicitar memória ao sistema operacional, ou seja, faz a alocação de

Leia mais

Estrutura de Dados Listas

Estrutura de Dados Listas Universidade Federal da Paraíba Centro de Informática Departamento de Informática Estrutura de Dados Listas 1 Tiago Maritan [email protected] Conteúdos Abordados O Conceito de Listas Listas com Representação

Leia mais

O que é um jogo digital?

O que é um jogo digital? O que é um jogo digital? Programa de Computador Dados Algoritmos Para que estudar Estrutura de Dados? Para manipular os dados dos programas usamos os ALGORITMOS e para organizar os dados da melhor forma

Leia mais

INF 1620 P3-29/06/04 Questão 1 Nome:

INF 1620 P3-29/06/04 Questão 1 Nome: INF 1620 P3-29/06/04 Questão 1 Considere um arquivo texto que descreve um conjunto de retângulos e círculos. Cada linha do arquivo contém a descrição de uma figura. O primeiro caractere da linha indica

Leia mais

Matrizes esparsas: definição

Matrizes esparsas: definição Matrizes esparsas: definição o objetivo é mostrar os métodos de armazenamento e manipulação de matrizes esparsas esparsidade de uma matriz é a relação entre o número de elementos nulos de uma matriz e

Leia mais

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal Exercício Crie uma função que recebe o número de dias até um determinado evento e calcula e retorna o equivalente em meses, semanas e dias, sem usar vetor ou o conceito de vetor. Considerar que todos os

Leia mais

Aula 19 Árvores Rubro-Negras

Aula 19 Árvores Rubro-Negras Algoritmos e Estruturas de Dados I Aula 19 Árvores Rubro-Negras Prof. Jesús P. Mena-Chalco [email protected] Q1-2017 1 Árvores de Busca Binária Por que ABBs? São estruturas eficientes de busca (se

Leia mais

Introdução a Programação. Listas Encadeadas

Introdução a Programação. Listas Encadeadas Introdução a Programação Listas Encadeadas Tópicos da Aula Hoje aprenderemos que existem, além de vetores, estruturas de dados dinâmicas que podem armazenar coleções de dados Estruturas Dinâmicas e Vetores

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 [email protected] Listas e Filas Estruturas de Dados 2 Estrututuras de dados lineares Pilhas (stack) Estrutura de dados onde a inserção

Leia mais

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 9

Estrutura de Dados. Ricardo José Cabeça de Souza  Parte 9 Estrutura de Dados Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Parte 9 VETOR Ao declararmos um vetor, reservamos um espaço contíguo de memória para armazenar seus elementos Vetor não é uma estrutura

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 [email protected] 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

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que: Tabelas Hash Tabelas Hash O uso de listas ou árvores para organizar informações é interessante e produz bons resultados. Porem, em nenhuma dessas estruturas se obtém o acesso direto a alguma informação,

Leia mais

Paradigmas de Linguagens

Paradigmas de Linguagens Paradigmas de Linguagens Aula 2: Tipos de dados Professora Sheila Cáceres Tipos de dados Dados são a matéria prima da computação junto com os programas. LPs precisam manipular dados. LPS utilizam os conceitos

Leia mais

MCTA028 Programação Estruturada Aula 03: - Funções e procedimentos - Vetores e matrizes

MCTA028 Programação Estruturada Aula 03: - Funções e procedimentos - Vetores e matrizes MCTA28 Programação Estruturada Aula 3: - Funções e procedimentos - Vetores e matrizes Prof. João Henrique Kleinschmidt Material elaborado pelo Prof. Jesús P. Mena-Chalco 3Q-218 Funções Funções (modularidade)

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB [email protected] Aritmética de ponteiros em C (continuação) O que acontece na memória? Ponteiro para ponteiro etc. Métodos de pesquisa

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

SCC Algoritmos e Estruturas de Dados I

SCC Algoritmos e Estruturas de Dados I SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Lembrem...TADs são tipos definidos em termos de seu comportamento e não de sua representação (que pode variar na busca de eficiência) 12/8/2010 Pilha

Leia mais

MC3305 Algoritmos e Estruturas de Dados II. Aula 06 Árvores. Prof. Jesús P. Mena-Chalco.

MC3305 Algoritmos e Estruturas de Dados II. Aula 06 Árvores. Prof. Jesús P. Mena-Chalco. MC3305 Algoritmos e Estruturas de Dados II Aula 06 Árvores Prof. Jesús P. Mena-Chalco [email protected] 2Q-2015 1 Árvores Uma árvore é uma estrutura de dados mais geral que uma lista ligada. Nessa

Leia mais

INF 1620 P2-01/11/03 Questão 1 Nome:

INF 1620 P2-01/11/03 Questão 1 Nome: INF 1620 P2-01/11/03 Questão 1 Considere a implementação de uma lista encadeada para armazenar as notas dos alunos de uma turma dada pelo tipo abaixo: struct lista { char nome[81]; int mat; float p1, p2,

Leia mais

Aula 13 Árvores Rubro-Negras

Aula 13 Árvores Rubro-Negras MC3305 Algoritmos e Estruturas de Dados II Aula 13 Árvores Rubro-Negras Prof. Jesús P. Mena-Chalco [email protected] 2Q-2015 1 Árvores de Busca Binária Por que ABBs? São estruturas eficientes de

Leia mais

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA ÁRVORES E ÁRVORE BINÁRIA DE BUSCA Prof. André Backes Definição 2 Diversas aplicações necessitam que se represente um conjunto de objetos e as suas relações hierárquicas Uma árvore é uma abstração matemática

Leia mais

Ponteiros. Introdução e Alocação Dinâmica

Ponteiros. Introdução e Alocação Dinâmica Ponteiros Introdução e Alocação Dinâmica Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma

Leia mais

1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador.

1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador. 1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador. 1) Fila 2) Pilha 3) Árvore 4) Lista 5) Grafo 2. Selecione a Estrutura de Dados que melhor representa

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

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

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Alocação de Memória Linguagem de Programação Estruturada 1 Alocação dinâmica e ponteiros Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Sumario Introdução Alocação Estática

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

Listas Lineares. continuando...

Listas Lineares. continuando... Listas Lineares continuando... 1 Listas! relembrando: listas lineares agrupa informações referentes aum conjunto de elementos que, de alguma forma, se relacionam entre si! Uma lista linear ou está vazia,

Leia mais

Estrutura de Dados. Estrutura de Dados Recursividade. Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0!

Estrutura de Dados. Estrutura de Dados Recursividade. Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0! Rafael D. Ribeiro, M.Sc. [email protected] http://www.rafaeldiasribeiro.com.br Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0! Fatorial de 0 = 1 Recursividade 1 Recursividade

Leia mais

Alocação Dinâmica em C

Alocação Dinâmica em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara

Leia mais