Computadores Digitais 2. Prof. Rodrigo de Souza Couto

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

Download "Computadores Digitais 2. Prof. Rodrigo de Souza Couto"

Transcrição

1 Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista

2 Tópicos Listas Encadeadas Introdução às listas encadeadas Manipulação de elementos Implementações recursivas Listas Circulares Listas Duplamente Encadeadas Listas de Tipos Estruturados

3 ATENÇÃO Esta apresentação foi baseada nos seguinte trabalhos: Notas de aula do Prof. Marco Casanova da PUC-Rio Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus, 2004

4 Parte 1 Programação (linguagem C) Listas Encadeadas

5 Motivação Vetor estaticamente alocado É necessário especificar um tamanho fixo na escrita do código Posição contígua na memória Acesso aleatório de elementos Isto é, elementos são acessados pelos seus índices, sem precisar percorrer outros elementos vet

6 Motivação Vetor dinamicamente alocado Tamanho do vetor pode ser especificado em tempo de execução Também permite acesso aleatório por ocupar posição contígua na memória vet

7 Motivação Vetor dinamicamente alocado Tamanho do vetor pode ser especificado em tempo de execução Também permite acesso aleatório por ocupar posição contígua na memória vet E se a dimensão do vetor mudar em tempo de execução??? Por exemplo, numa estrutura que armazena funcionários de uma empresa. Funcionários constantemente entram e saem da empresa.

8 Motivação Vetor dinamicamente alocado Pode ser redimensionado com a função realloc Modifica o tamanho do conteúdo previamente alocado Como vetor deve ser contíguo, função pode precisar copiar todo o conteúdo do vetor original para uma nova posição de memória para acomodar a nova alocação vet > 116 a vet > Realocando um vetor de 3 elementos a

9 Motivação Vetor dinamicamente alocado realloc muitas vezes não é recomendada por não ser eficiente Quando o número de elementos muda em tempo de execução, é preferível utilizar estruturas dinâmicas Listas encadeadas, árvores, etc. Neste curso, abordaremos apenas listas encadeadas

10 Listas Encadeadas Cada elemento (também chamado de nó) é uma estrutura listapessoas Um dos itens da estrutura é ponteiro para o próximo elemento da lista Ex: Lista de pessoas Fim da lista é indicado por um ponteiro para Nome1 Nome2 Nome3

11 Listas Encadeadas Adição de um novo elemento listapessoas Aloca-se dinamicamente o novo elemento Alocação da estrutura Ponteiro para um dos elementos (p.ex. o último) aponta para essa estrutura Nome1 Nome2 Nome3 Nome4

12 Listas Encadeadas Diferente dos vetores, essas listas não precisam estar em posições contíguas na memória Acesso não aleatório Elementos devem ser percorridos para encontrar o elemento desejado listapessoas Pessoa2 Nome Nome1 Nome2 Pessoa1 120 Nome listapessoas

13 Listas Encadeadas Declaração de estrutura para lista com uma informações do tipo int typedef struct lista { int info; struct lista* prox; Lista; listainfos Declaração para uma estrutura isolada Info1 Info2

14 Listas Encadeadas Declaração de estrutura para lista com uma informações do tipo int typedef struct lista { int info; struct lista* prox; Lista; listainfos Ponteiro para o próximo elemento da lista Info1 Info2

15 Listas Encadeadas Declaração de estrutura para lista com uma informações do tipo int typedef struct lista { int info; struct lista* prox; Lista; listainfos Estrutura autorreferenciada Info1 Info2

16 Listas Encadeadas Exemplo: Função de criação de uma nova lista Retorna variável do tipo Lista com ponteiro para Lista* _cria(void){ return ; listainfos

17 Listas Encadeadas Exemplo: Inserção de novos elementos Lista* _insere(lista*, int i){ Lista* novo = (Lista*) malloc(sizeof(lista)); novo->info = i; novo->prox = ; return novo; Info1

18 Listas Encadeadas Exemplo: Inserção de novos elementos Lista* _insere(lista*, int i){ Lista* novo = (Lista*) malloc(sizeof(lista)); novo->info = i; novo->prox = ; novo return novo; Info2 Info1

19 Listas Encadeadas Exemplo: Inserção de novos elementos Lista* _insere(lista*, int i){ Lista* novo = (Lista*) malloc(sizeof(lista)); novo->info = i; novo->prox = ; novo return novo; i Info1

20 Listas Encadeadas Exemplo: Inserção de novos elementos Lista* _insere(lista*, int i){ Lista* novo = (Lista*) malloc(sizeof(lista)); novo->info = i; novo->prox = ; novo return novo; i Info1

21 Listas Encadeadas Exemplo: Inserção de novos elementos Lista* _insere(lista*, int i){ Lista* novo = (Lista*) malloc(sizeof(lista)); novo->info = i; novo->prox = ; novo return novo; i Endereço indicado pela variável novo representará o novo ponteiro da lista Info1

22 Listas Encadeadas Exemplo: Trecho de código que utiliza as funções anteriores int main(void){ Lista *; = _cria(); = _insere(,23); = _insere(,45);...

23 Lista* _cria(void){ return ; int main(void){ Lista *; = _cria(); = _insere(,23); = _insere(,45);...

24 Lista* _insere(lista*, int i){ Lista* novo = (Lista*) malloc(sizeof(lista)); novo->info = i; novo->prox = ; return novo; 23 int main(void){ Lista *; = _cria(); = _insere(,23); = _insere(,45);...

25 Lista* _insere(lista*, int i){ Lista* novo = (Lista*) malloc(sizeof(lista)); novo->info = i; novo->prox = ; return novo; int main(void){ Lista *; = _cria(); = _insere(,23); = _insere(,45);... 23

26 Lista* _insere(lista*, int i){ Lista* novo = (Lista*) malloc(sizeof(lista)); novo->info = i; novo->prox = ; return novo; 45 int main(void){ Lista *; = _cria(); = _insere(,23); = _insere(,45);... 23

27 Lista* _insere(lista*, int i){ Lista* novo = (Lista*) malloc(sizeof(lista)); novo->info = i; novo->prox = ; return novo; int main(void){ Lista *; = _cria(); = _insere(,23); = _insere(,45);

28 Listas Encadeadas Função alternativa para inserção de elementos Modifica o próprio ponteiro da lista Lista* _insere(lista**, int i){ Lista* novo = (Lista*) malloc(sizeof(lista)); novo->info = i; novo->prox = *; * = novo; int main(void){ Lista *; = _cria(); _insere(&,23);...

29 Listas Encadeadas Função alternativa para inserção de elementos Modifica o próprio ponteiro da lista Lista* _insere(lista**, int i){ Lista* novo = (Lista*) malloc(sizeof(lista)); novo->info = i; novo->prox = *; * = novo; int main(void){ Função recebe um ponteiro para o ponteiro da lista Lista *; = _cria(); _insere(&,23);...

30 Listas Encadeadas Exemplo: Função que imprime todos os valores da lista Variável auxiliar que indica o elemento atual void _imprime(lista* ){ Lista* p; for (p = ; p!= ; p = p->prox) printf( info = %d\n, p->info);

31 Listas Encadeadas Exemplo: Função que imprime todos os valores da lista Variável auxiliar que indica o elemento atual void _imprime(lista* ){ Lista* p; for (p = ; p!= ; p = p->prox) printf( info = %d\n, p->info); p

32 Listas Encadeadas Exemplo: Função que imprime todos os valores da lista void _imprime(lista* ){ Lista* p; for (p = ; p!= ; p = p->prox) printf( info = %d\n, p->info); p

33 Listas Encadeadas Exemplo: Função que imprime todos os valores da lista void _imprime(lista* ){ Lista* p; for (p = ; p!= ; p = p->prox) printf( info = %d\n, p->info); p

34 Listas Encadeadas Exemplo: Função que imprime todos os valores da lista void _imprime(lista* ){ Lista* p; for (p = ; p!= ; p = p->prox) printf( info = %d\n, p->info); p

35 Listas Encadeadas Exemplo: função de busca Como posso retornar um ponteiro para o elemento com valor v? Retorna se elemento não for encontrado Lista* _busca(lista*, int v)

36 void Lista* _busca(lista*, int v){ Lista* p; for (p = ; p!= ; p = p->prox) if (p->info == v) return p; return v= p

37 void Lista* _busca(lista*, int v){ Lista* p; for (p = ; p!= ; p = p->prox) if (p->info == v) return p; return Retorna endereço do elemento, pois encontrou o valor! p

38 Listas Encadeadas Exemplo: Retirada de Elemento da lista Se elemento for o primeiro, libera a memória e atualiza o ponteiro Senão, o elemento anterior deve apontar par o seguinte

39 Lista* _retira(lista*, int v){ Lista* ant = ; Lista* p = ; while (p!= && p->info!= v){ ant = p; p = p->prox; if (p == ) return ; Procura o elemento na lista, guardando o anterior if (ant == ){ = p->prox; else{ 23 ant 45 p 67 ant->prox = p->prox; free(p); return ;

40 Lista* _retira(lista*, int v){ Lista* ant = ; Lista* p = ; while (p!= && p->info!= v){ ant = p; p = p->prox; if (p == ) return ; Procura o elemento na lista, guardando o anterior if (ant == ){ = p->prox; else{ ant->prox = p->prox; ant p free(p); return ;

41 Lista* _retira(lista*, int v){ Lista* ant = ; Lista* p = ; while (p!= && p->info!= v){ ant = p; p = p->prox; if (p == ) return ; if (ant == ){ = p->prox; else{ ant->prox = p->prox; free(p); Se o valor não for encontrado, retorna sem retirada de elementos ant p return ;

42 Lista* _retira(lista*, int v){ Lista* ant = ; Lista* p = ; while (p!= && p->info!= v){ ant = p; p = p->prox; if (p == ) return ; if (ant == ){ = p->prox; else{ ant->prox = p->prox; Se temos ant==, o primeiro elemento foi escolhido para ser retirado. Atualiza-se o ponteiro para a próxima posição p free(p); return ; ant

43 Lista* _retira(lista*, int v){ Lista* ant = ; Lista* p = ; while (p!= && p->info!= v){ ant = p; p = p->prox; if (p == ) return ; if (ant == ){ Memória alocada para o elemento = p->prox; será liberada posteriormente else{ ant->prox = p->prox; p free(p); return ; ant

44 Lista* _retira(lista*, int v){ Lista* ant = ; Lista* p = ; while (p!= && p->info!= v){ ant = p; p = p->prox; if (p == ) return ; if (ant == ){ = p->prox; ant p else{ ant->prox = p->prox; Se quisermos retirar elementos do meio, atualizamos elemento anterior free(p); com o endereço do próximo return ;

45 Lista* _retira(lista*, int v){ Lista* ant = ; Lista* p = ; while (p!= && p->info!= v){ ant = p; p = p->prox; if (p == ) return ; if (ant == ){ = p->prox; ant p else{ ant->prox = p->prox; Memória alocada para o elemento será liberada posteriormente free(p); return ;

46 Listas Encadeadas Liberação de memória após o uso da lista void _libera(lista* ){ Lista* p = ; while (p!= ){ Lista* proximo = p->prox; free(p); p = proximo; Guarda referência para o próximo elemento, antes de liberar o atual

47 Listas Encadeadas Exercício: Fazer uma função que coloque na lista elementos na ordem crescente Item info Considerar que a lista recebida já está ordenada Isto é não são necessários procedimentos de ordenação Lista* _insere_ordenado(lista*, int v) typedef struct lista { int info; struct lista* prox; Lista;

48 Lista* _insereordenado(lista*, int v){ Lista* novo = (Lista*) malloc(sizeof(lista)); Lista* ant = ; Lista* p = ; novo novo->info = v;

49 Lista* _insereordenado(lista*, int v){ Lista* novo = (Lista*) malloc(sizeof(lista)); Lista* ant = ; Lista* p = ; novo novo->info = v; 55 while (p!= && p->info < v){ ant = p; p = p->prox; Varre a lista até achar um elemento com valor igual o maior que v. p apontará para esse elemento. Função também guarda o elemento anterior ant p

50 Lista* _insereordenado(lista*, int v){ Lista* novo = (Lista*) malloc(sizeof(lista)); Lista* ant = ; Lista* p = ; novo->info = v; novo while (p!= && p->info < v){ ant = p; p = p->prox; if (ant == ){ novo->prox = ; = novo; Caso o elemento a ser inserido seja menor que o primeiro da lista p ant

51 Lista* _insereordenado(lista*, int v){ Lista* novo = (Lista*) malloc(sizeof(lista)); Lista* ant = ; Lista* p = ; novo->info = v; novo while (p!= && p->info < v){ ant = p; p = p->prox; if (ant == ){ novo->prox = ; = novo; Caso o elemento a ser inserido seja menor que o primeiro da lista p ant

52 Lista* _insereordenado(lista*, int v){ Lista* novo = (Lista*) malloc(sizeof(lista)); Lista* ant = ; Lista* p = ; novo->info = v; while (p!= && p->info < v){ ant = p; 55 p = p->prox; if (ant == ){ novo->prox = ; = novo; else{ novo->prox = ant->prox; ant->prox = novo; return ; novo ant Caso o elemento a ser inserido esteja no meio da lista p

53 Lista* _insereordenado(lista*, int v){ Lista* novo = (Lista*) malloc(sizeof(lista)); Lista* ant = ; Lista* p = ; novo->info = v; while (p!= && p->info < v){ ant = p; 55 p = p->prox; if (ant == ){ novo->prox = ; = novo; else{ novo->prox = ant->prox; ant->prox = novo; return ; novo ant Caso o elemento a ser inserido esteja no meio da lista p

54 Implementações Recursivas Uma lista pode ser considerada como um elemento seguido de uma sublista lista 23 sublista1

55 Implementações Recursivas Uma lista pode ser considerada como um elemento seguido de uma sublista lista 23 sublista1 sublista1 45 sublista2

56 Implementações Recursivas Uma lista pode ser considerada como um elemento seguido de uma sublista lista 23 sublista1 sublista1 45 sublista2 sublista2 67

57 Implementações Recursivas Uma lista pode ser considerada como um elemento seguido de uma sublista lista sublista sublista2

58 Implementações Recursivas Exemplo: Impressão dos elementos void _imprime_rec(lista* ){ if (!= ){ printf( info = %d\n, ->info); _imprime_rec(->prox); lista sublista sublista2

59 Listas Encadeadas Circulares Último elemento aponta para o primeiro Estrutura do elemento idêntica ao caso das listas simples Funções de percurso da lista devem detectar fim da lista pela volta ao primeiro elemento Nas listas simples, utiliza-se o valor Nome1 Nome2 Nome3

60 Listas Encadeadas Circulares Exemplo: Função para imprimir todos os elementos void Circ_imprime(Lista* ){ Lista* p = ; if (p) do{ printf( info = %d\n, p->info); p = p->prox; while (p!= ) Verifica se a lista não é vazia. Lista vazia é iniciada com, como visto para listas simples

61 Listas Encadeadas Circulares Exemplo: Função para imprimir todos os elementos void Circ_imprime(Lista* ){ Lista* p = ; if (p) do{ printf( info = %d\n, p->info); p = p->prox; while (p!= ) Quando p aponta de novo para o primeiro elemento, a lista chegou ao fim

62 Listas Duplamente Encadeadas Cada elemento tem um ponteiro para o próximo elemento e para o elemento anterior Dado um ponteiro para o último elemento da lista, é possível percorrer na ordem inversa Torna algumas operações mais eficientes, como remoção de elementos Info1 Info2 Info3

63 Listas Duplamente Encadeadas Cada elemento tem um ponteiro para o próximo elemento e para o elemento anterior Dado um ponteiro para o último elemento da lista, é possível percorrer na ordem inversa Torna algumas operações mais eficientes, pois não é necessário ter uma referência para o elemento anterior Info1 Info2 Info3

64 Listas Duplamente Encadeadas Declaração de estrutura para lista com informações do tipo int typedef struct lista2 { int info; struct lista2* ant; struct lista2* prox; Lista2; Declaração para uma estrutura isolada Info1 Info2 Info3

65 Listas Duplamente Encadeadas Exemplo: inserção de novos elementos Lista2* 2_insere(Lista2*, int v){ Lista2* novo = (Lista2*) malloc(sizeof(lista2)); novo->info = v; novo->ant = ; novo->prox = ; if (!= ) ->ant = novo; return novo; 34 23

66 Listas Duplamente Encadeadas Exemplo: inserção de novos elementos Lista2* 2_insere(Lista2*, int v){ Lista2* novo = (Lista2*) malloc(sizeof(lista2)); novo->info = v; novo->ant = ; novo->prox = ; if (!= ) ->ant = novo; return novo; novo

67 Listas Duplamente Encadeadas Exemplo: inserção de novos elementos Lista2* 2_insere(Lista2*, int v){ Lista2* novo = (Lista2*) malloc(sizeof(lista2)); novo->info = v; novo->ant = ; novo->prox = ; if (!= ) ->ant = novo; return novo; novo

68 Listas Duplamente Encadeadas Exemplo: inserção de novos elementos Lista2* 2_insere(Lista2*, int v){ Lista2* novo = (Lista2*) malloc(sizeof(lista2)); novo->info = v; novo->ant = ; novo->prox = ; if (!= ) ->ant = novo; return novo; novo

69 Listas Duplamente Encadeadas Exemplo: Busca de elementos Idêntica à função para listas simples Só é utilizado o ponteiro para ao próximo elemento Lista2* 2_busca(Lista2*, int v){ Lista2* p; for (p = ; p!= ; p = p->prox) if (p->info == v) return p; return

70 Listas Duplamente Encadeadas Exemplo: Remoção de elementos É possível remover elementos apenas sabendo o endereço o elemento a ser retirado Como temos a informação do elemento anterior, não é necessários buscar na lista o elemento anterior ao retirado Primeiro busca-se o elemento e depois realiza-se sua remoção Info1 Info2 Info3

71 Listas Duplamente Encadeadas Exercício: Fazer a função de remoção Lista2* 2_retira(Lista2*, int v) Dica: Utilizar a função de busca Lista2* 2_busca(Lista2*, int v)

72 Lista2* 2_retira(Lista2*, int v){ Lista2* p = busca(,v); Busca o ponteiro para o elemento da lista a ser retirado Ex: v = p 67 45

73 Lista2* 2_retira(Lista2*, int v){ Lista2* p = busca(,v); if (p == ) return ; Se elemento não for encontrado, nada se faz

74 Lista2* 2_retira(Lista2*, int v){ Lista2* p = busca(,v); if (p == ) return ; if ( == p) = p->prox; Testa se elemento a ser retirado é o primeiro elemento p Ex: v =

75 Lista2* 2_retira(Lista2*, int v){ Lista2* p = busca(,v); if (p == ) return ; if ( == p) = p->prox; Ponteiro inical da lista pula o primeiro elemento Os outros ponteiro serão desfeitos depois p Ex: v =

76 Lista2* 2_retira(Lista2*, int v){ Lista2* p = busca(,v); if (p == ) return ; if ( == p) = p->prox; else p->ant->prox = p->prox; No caso de ser um elemento do meio Ex: v = p

77 Lista2* 2_retira(Lista2*, int v){ Lista2* p = busca(,v); if (p == ) return ; Ponteiro prox do elemento anterior if ( == p) receberá o próximo elemento de p = p->prox; else p->ant->prox = p->prox; p

78 Lista2* 2_retira(Lista2*, int v){ Lista2* p = busca(,v); if (p == ) return ; if ( == p) = p->prox; else p->ant->prox = p->prox; if (p->prox!= ) p->prox->ant = p->ant; Se p não for elemento final, o pointeiro ant do próximo elemento recebe seu elemento anterior p

79 Lista2* 2_retira(Lista2*, int v){ Lista2* p = busca(,v); if (p == ) return ; if ( == p) = p->prox; else p->ant->prox = p->prox; Isso também é realizado se o primeiro elemento for retirado if (p->prox!= ) p->prox->ant = p->ant; p

80 Lista2* 2_retira(Lista2*, int v){ Lista2* p = busca(,v); if (p == ) return ; if ( == p) = p->prox; else p->ant->prox = p->prox; Mas nesse caso é um ponteiro para if (p->prox!= ) p->prox->ant = p->ant; p

81 Lista2* 2_retira(Lista2*, int v){ Lista2* p = busca(,v); if (p == ) return ; p if ( == p) = p->prox; else p->ant->prox = p->prox; if (p->prox!= ) p->prox->ant = p->ant; free(p); return ; Memória é liberada, retirando o elemento

82 Lista2* 2_retira(Lista2*, int v){ Lista2* p = busca(,v); if (p == ) return ; if ( == p) = p->prox; else p->ant->prox = p->prox; if (p->prox!= ) p->prox->ant = p->ant; p free(p); return ; Memória é liberada, retirando o elemento

83 Listas de Tipos Estruturados Listas vista até agora têm conteúdo simples P.ex. Cada nó tem um número inteiro

84 Listas de Tipos Estruturados A informação associada a cada nó pode ser mais complexa, sem alterar o encadeamento dos nós Ex: Matrícula e nome de aluno 2323 Rodrigo 2329 Ana 2321 José

85 Listas de Tipos Estruturados Independente da informação armazenada na lista, a estrutura do nó é sempre composta por Um variável para a informação Um ponteiro para o próximo nó da lista typedef struct aluno { int mat; char nome[81]; Aluno; typedef struct lista { Aluno info; struct lista *prox; Lista;

86 Listas de Tipos Estruturados Inserção de novos elementos #include <string.h> Lista* _insere(lista*, int mat, char* nome){ Lista* novo = (Lista*) malloc(sizeof(lista)); novo->info.mat = mat; strcpy(novo->info.nome,nome); novo->prox = ; return novo;

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

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense - Instituto de C Linguagem C: Listas Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Listas Encadeadas Definição Funções básicas Tópicos Principais

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

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

Métodos Computacionais. Listas Encadeadas

Métodos Computacionais. Listas Encadeadas Métodos Computacionais Listas Encadeadas Vetores Declaração de vetor implica na especificação de seu tamanho Não se pode aumentar ou diminuir tamanho Outra alternativa no uso de vetores é alocar dinamicamente

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

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

Estruturas de Dados. Módulo 12 - Filas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 12 - Filas 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

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense - Instituto de C Filas Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução

Leia mais

Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011

Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011 Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011 Fontes Bibliográficas Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

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 Aula de Hoje Matrizes Alocação estática versus dinâmica Vetores bidimensionais matrizes Matrizes dinâmicas ATENÇÃO

Leia mais

Fontes Bibliográficas. Listas Circulares. Função Imprime

Fontes Bibliográficas. Listas Circulares. Função Imprime Fontes Bibliográficas Estruturas de Dados Aula 12: Outras Implementações de Listas Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004) Capítulo

Leia mais

Métodos Computacionais. Variações de Listas Encadeadas

Métodos Computacionais. Variações de Listas Encadeadas Métodos Computacionais Variações de Listas Encadeadas Variações de Listas Encadeadas Listas podem variar quanto ao: Tipo de encadeamento Simples Circulares Duplas Circulares e Duplas Conteúdo Tipos Primitivos

Leia mais

Listas Encadeadas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Listas Encadeadas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes Listas Encadeadas Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Fevereiro de 2011 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados

Leia mais

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Ponteiros Alocação dinâmica de memória Recursão INSTITUTO DE COMPUTAÇÃO - UFF 2 PONTEIROS PONTEIROS C permite o armazenamento

Leia mais

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 17 - Busca 2/6/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

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 08 Vetor de Ponteiros Edirlei Soares de Lima Vetor de Cadeia de Caracteres Um vetor de cadeia de caracteres pode ser alocado de duas formas: Alocação

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

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

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 Aula de Hoje Vetores e alocação dinâmica Vetores Alocação dinâmica Vetores locais e funções ATENÇÃO Esta apresentação

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

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 07 Vetor de Ponteiros Edirlei Soares de Lima Vetor de Cadeia de Caracteres Vetores de cadeias de caracteres. Exemplo: char alunos[50][81]; Função para

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 Aula de Hoje Arquivos Funções para abrir e fechar arquivos Arquivos em modo texto Arquivos em modo binário ATENÇÃO

Leia mais

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior Árvore Binária de Busca (ABB) o valor associado à raiz é sempre maior que o valor associado a qualquer nó da sub-árvore à esquerda

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 Aula de Hoje Tipos Estruturados Tipo estrutura Definição de novos tipos Aninhamento de Estruturas Vetores de estruturas

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) ASN Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Material elaborado com base nos slides do Prof. Reinaldo Fortes (curso

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

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

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

Módulo 18 - Tabelas de Dispersão. Referências

Módulo 18 - Tabelas de Dispersão. Referências Estruturas de Dados Módulo 18 - Tabelas de Dispersão 7/6/2006 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora

Leia mais

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ÁRVORES BINÁRIAS DE BUSCA Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REFERÊNCIA Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Cap. 4 INSTITUTO DE COMPUTAÇÃO

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 13 Pilhas Edirlei Soares de Lima Pilha Uma pilha é uma estrutura de dados dinâmica na qual novos elementos são sempre inseridos no topo da pilha e acessados

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

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

INF1007 Programação 2 9 Pilhas. (c) Dept. Informática - PUC-Rio 1

INF1007 Programação 2 9 Pilhas. (c) Dept. Informática - PUC-Rio 1 INF1007 Programação 2 9 Pilhas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Interface do tipo pilha Exemplo de uso: verificação de expressões Implementação de pilha com lista encadeada

Leia mais

INF1007: Programação 2. 4 Tipos Estruturados. 10/23/09 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2. 4 Tipos Estruturados. 10/23/09 (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 4 Tipos Estruturados 10/23/09 (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Tipo estrutura Definição de novos tipos Aninhamento de estruturas Vetores de estruturas Vetores

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

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

Programação de Computadores II. Cap. 17 Busca

Programação de Computadores II. Cap. 17 Busca Programação de Computadores II Cap. 17 Busca Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:

Leia mais

DAINF - Departamento de Informática

DAINF - Departamento de Informática DAINF - Departamento de Informática Algoritmos 2 - Árvore binária de busca Prof. Alex Kutzke ( http://alex.kutzke.com.br/courses ) 30 de Novembro de 2015 Slides adaptados do material produzido pelo Prof.

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

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 6 Ordenação de Vetores 01/10/2015 (c) Dept. Informática - PUC-Rio 1 Tópicos Introdução Ordenação bolha (bubble sort) Ordenação por seleção (selection sort) 01/10/2015 (c) Dept. Informática

Leia mais

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010 Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010 Aluno: Matrícula: Turma: Instruções: 1) Escreva seu nome completo, matrícula e turma em todas as folhas desta prova; 2) A prova

Leia mais

Estruturas de Dados Aula 16: Árvores com Número Variável 13/06/2011

Estruturas de Dados Aula 16: Árvores com Número Variável 13/06/2011 Estruturas de Dados Aula 16: Árvores com Número Variável de Filhos 13/06/2011 1 Fontes Bibliográficas Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos

Leia mais

Estruturas de Dados Aula 17: Estruturas Genéricas 15/06/2011

Estruturas de Dados Aula 17: Estruturas Genéricas 15/06/2011 Estruturas de Dados Aula 17: Estruturas Genéricas 15/06/2011 1 Fontes Bibliográficas Livro: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 14; Slides baseados no material da PUC-Rio,

Leia mais

PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: 22/09/2010

PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: 22/09/2010 UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA Bacharelado em Ciência da Computação e Engenharia da Computação INF 01203 Estruturas de Dados Profa. Renata Galante (galante@inf.ufrgs.br

Leia mais

Programação de Computadores II. Cap. 16 Ordenação

Programação de Computadores II. Cap. 16 Ordenação Programação de Computadores II Cap. 16 Ordenação Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:

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

Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares!

Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares! Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares! 28/9/, 30/9/ e 5/10/2010 Representação/Implementação: Encadeada dinâmica Exercícios Lista Simplesmente

Leia mais

Listas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I

Listas (Parte 1) Túlio Toffolo  BCC202 Aula 09 Algoritmos e Estruturas de Dados I Listas (Parte 1) Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br BCC202 Aula 09 Algoritmos e Estruturas de Dados I Ementa do Curso Tipos Abstratos de Dados / Alocação Dinâmica Análise de Algoritmos

Leia mais

12. Filas Interface do tipo fila

12. Filas Interface do tipo fila 12. Filas W. Celes e J. L. Rangel Outra estrutura de dados bastante usada em computação é a fila. Na estrutura de fila, os acessos aos elementos também seguem uma regra. O que diferencia a fila da pilha

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

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos

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

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

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- Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra Árvores CES- Operações sobre uma árvore Estruturas para armazenar árvores Contígua Contígua melhorada Encadeada

Leia mais

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010 Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010 Aluno: Instruções: 1) Escreva seu nome completo, matrícula e turma em todas as folhas desta prova; 2) A prova deve ser completamente

Leia mais

Lista: conceito, representação e algoritmos

Lista: conceito, representação e algoritmos Lista: conceito, representação e algoritmos SCC0502 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Problema Imaginem a situação da automação de uma biblioteca Todos os livros devem ser cadastrados

Leia mais

Programação de Computadores II. Cap. 4 Funções

Programação de Computadores II. Cap. 4 Funções Programação de Computadores II Cap. 4 Funções Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:

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 tiago@ci.ufpb.br Conteúdos Abordados O Conceito de Listas Listas com Representação

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

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 4 Funções 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

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA 787878787878787878787878787878787878787878787878787878 13. ALOCAÇÃO DINÂMICA DE MEMÓRIA Sempre é necessário declarar o número de elementos do array. Mas e se ele for desconhecido? E se ele variar? Pode

Leia mais

Módulo 8 Tipos Estruturados

Módulo 8 Tipos Estruturados Estruturas de Dados Módulo 8 Tipos Estruturados 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

Módulo 7 Cadeias de Caracteres

Módulo 7 Cadeias de Caracteres Estruturas de Dados Módulo 7 Cadeias de Caracteres 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

Leia mais

Lista: conceito, representação e algoritmos

Lista: conceito, representação e algoritmos Lista: conceito, representação e algoritmos SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Problema Imaginem a situação da automação de uma biblioteca Todos os livros devem ser cadastrados

Leia mais

Programação de Computadores II. Cap. 5 Vetores

Programação de Computadores II. Cap. 5 Vetores Programação de Computadores II Cap. 5 Vetores Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:

Leia mais

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas SCC-502 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Lista com nó de cabeçalho Nó de cabeçalho Header, sentinela, etc.

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

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1 Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) PIP/CA - Programa Interdisciplinar de Pós-Graduação

Leia mais

Referências. Programação de Computadores II. Cap. 6 Matrizes. Tópicos. Alocação Estática versus Dinâmica. Alocação Estática versus Dinâmica

Referências. Programação de Computadores II. Cap. 6 Matrizes. Tópicos. Alocação Estática versus Dinâmica. Alocação Estática versus Dinâmica Referências Programação de Computadores II Cap. 6 Matrizes Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004) Capítulo 6 Matrizes Livro: Waldemar

Leia mais

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011 Estruturas de Dados Aula 10: Listas (parte 2) 19/04/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

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

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

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e recodificações em C dos originais: Estruturas de Dados Listas Dinâmicas Simplesmente Encadeadas Prof. Ricardo J. G. B. Campello Créditos Parte dos slides a seguir são adaptações, extensões e recodificações em C dos originais: disponíveis

Leia mais

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

Estruturas de Dados. Módulo 6 Matrizes. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 6 Matrizes 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

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 4: Listas Estáticas e Dinâmicas Listas Estáticas: com Vetores Dinâmicas: Listas Ligadas (com ponteiros) Variáveis e Métodos de Controle:

Leia mais

SCC 202 Algoritmos e Estruturas de Dados I. Listas Lineares Encadeadas Alocação dinâmica

SCC 202 Algoritmos e Estruturas de Dados I. Listas Lineares Encadeadas Alocação dinâmica SCC 202 Algoritmos e Estruturas de Dados I Listas Lineares Encadeadas Alocação dinâmica Lista Encadeada Dinâmica Utiliza alocação dinâmica de memória ao invés de arranjos (vetores) pré-alocados. Inserção

Leia mais

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010 Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010 Aluno: Matrícula: Turma: Instruções: 1) Escreva seu nome completo, matrícula e turma; 2) A prova deve ser completamente resolvida

Leia mais

Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0

Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0 P4 Programação II 2012.2 Departamento de Informática/PUC- Rio Aluno: Matrícula: Turma: 1. A prova é sem consulta e sem perguntas. A interpretação do enunciado faz parte da prova. 2. A prova deve ser completamente

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 05 Recursividade Edirlei Soares de Lima Introdução As seguintes sentenças são Verdadeiras ou Falsas? 1. Alguém diz: Estou mentido agora! ; 2. Alguém

Leia mais

Listas - Outras. Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações

Listas - Outras. Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações Listas - Outras Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações 5 e 7/10/2010 Listas Circulares Encadeadas Dinâmicas Se o nó next do último nó apontar para o primeiro, teremos

Leia mais

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:

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

Leia mais

Reinaldo Gomes Alocação Dinâmica

Reinaldo Gomes Alocação Dinâmica Algoritmos e Lógica de Programação Linguagem C Alocação Dinâmica i de Memória Reinaldo Gomes reinaldo@cefet-al.br Alocação Dinâmica Quando declaramos uma variável ou um arranjo, o compilador automaticamente

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

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out). Fila Algumas aplicações impõem regras de acesso às informações armazenados em estruturas de dados, restringindo como os dados são inseridos e removidos da estrutura. A fila, também conhecida como QUEUE,

Leia mais

Lista Encadeada: algoritmos. Algoritmos e Estruturas de Dados I

Lista Encadeada: algoritmos. Algoritmos e Estruturas de Dados I Lista Encadeada: algoritmos Algoritmos e Estruturas de Dados I Operações genéricas sobre lista Considerando a representação de lista anterior, implemente o TAD lista com as seguintes operações criarlista(lista)

Leia mais

Algoritmos e Estruturas de Dados II IEC013

Algoritmos e Estruturas de Dados II IEC013 Algoritmos e Estruturas de Dados II IEC013 Revisão: Listas Encadeadas Prof. César Melo Todos os créditos reservados ao professor Leandro Galvão Listas Encadeadas Listas encadeadas ou listas ligadas representam

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

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

Módulo 14 - Estruturas genéricas

Módulo 14 - Estruturas genéricas Estruturas de Dados Módulo 14 - Estruturas genéricas 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora

Leia mais

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Estruturas de Dados. Profa. Juliana Pinheiro Campos Estruturas de Dados Profa. Juliana Pinheiro Campos Vetores Forma mais simples de estruturar um conjunto de dados. Exemplo: int p[10]; // vetor de inteiros com 10 elementos Reserva de um espaço de memória

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Aula 08 Ponteiros Edirlei Soares de Lima Endereço de uma Variável Toda variável definida em um programa ocupa uma área de memória; A cada área de memória

Leia mais

Programação de Computadores II. Cap. 7 Cadeias de Caracteres

Programação de Computadores II. Cap. 7 Cadeias de Caracteres Programação de Computadores II Cap. 7 Cadeias de Caracteres Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais

Leia mais

Linguagem C. Ponteiros. Alex Vidigal Bastos.

Linguagem C. Ponteiros. Alex Vidigal Bastos. Linguagem C Ponteiros Alex Vidigal Bastos alexvbh@gmail.com Ponteiros Ponteiros são variáveis que contém endereços. Estas variáveis apontam para algum determinado endereço da memória. Em geral, o ponteiro

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 04 Alocação Dinâmica Edirlei Soares de Lima Vetores - Declaração e Inicialização Declaração de um vetor: int meu_vetor[10]; Reserva um espaço de memória

Leia mais

Ponteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Ponteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Ponteiros e alocação dinâmica de memória Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Ponteiros Ponteiros e vetores Passagem por cópia e por referência Alocação

Leia mais