Lista: conceito, representação e algoritmos

Documentos relacionados
Lista: conceito, representação e algoritmos

Lista: conceito, representação e algoritmos

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Fila. Algoritmos e Estruturas de Dados I. Baseado no material de Thiago A. S. Pardo. Debora Medeiros

Fila. Fila. Biblioteca. Biblioteca. Biblioteca. Biblioteca. O que é? Para que serve? Algoritmos e Estruturas de Dados I

22/08/2011. Fila. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Fila. O que é? Para que serve?

Fila. SCC0502 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo

Fila. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

08/08/2011. Pilha. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Pilha. O que é? Para que serve?

SCC Algoritmos e Estruturas de Dados I

Pilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

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

SCC Algoritmos e Estruturas de Dados I

Fila. Algoritmos e Estruturas de Dados I

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

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

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

Estruturas de Dados I

Professora Jeane Melo

Métodos Computacionais. Listas Encadeadas

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

Atividade de laboratório listas encadeadas simples

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

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

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

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

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

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

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas. SCC-502 Algoritmos e Estruturas de Dados I

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

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

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

Lista Encadeada Simples. Métodos Computacionais Victor Casé

Estruturas de Dados Aula 11: TAD Pilha

Pilhas e Filas. Nádia Félix e Hebert Coelho

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

Algoritmos e Estruturas de dados

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

Aula 7 Encadeamento de Memória

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

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

Módulo 10 Listas Encadeadas

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

L I C R P * * V O * * A * A F * * * * *

Aula 11 Pilha Dinâmica. prof Leticia Winkler

Algoritmos e Estrutura de Dados. Aula 05 Estrutura de Dados: Listas (Parte II) Prof. Tiago A. E. Ferreira

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

SCC 202 Prova 1. 28/9/2010 Resolução e Comentários

Algoritmos e Estruturas de Dados II IEC013

- Estruturas e aplicações

INF P4-12/12/09 Questão 1 Nome:

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

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

Listas ordenadas. SCC-202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Listas em que os elementos estão ordenados por algum critério

12. Filas Interface do tipo fila

Alocação Seqüencial VAL MAX TOPO

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

BCC202 - Estrutura de Dados I

Aplicações de listas e outras estruturas

Árvores Binárias de Busca (ABB) 18/11

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

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

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

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

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

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

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

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

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

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

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

Estruturas de Dados Filas

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

Árvores. Prof. César Melo DCC/ICE/UFAM

BCC202 - Estrutura de Dados I

Árvores & Árvores Binárias

Fila e Deque. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Alocação Dinâmica de Memória

Capítulo 8: Abstrações de dados

Filas Exemplo de Aplicação

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Árvores Binárias de Busca (ABB) 18/11

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

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

void push(int i){ if (num<max) vet[num++]=i; else { printf(">>> Erro: overflow na pilha!!!\n"); printf("%d nao foi empilhado!!!

UNIVERSIDADE DA BEIRA INTERIOR

Aplicações de listas Outras estruturas

Universidade Federal do Ma Curso de Ciência da Computação

SSC304 Introdução à Programação Para Engenharias. Alocação Dinâmica. GE4 Bio

Listas Lineares. continuando...

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

1/36 LISTAS. Programação II

Árvores. Prof. César Melo DCC/ICE/UFAM

EPs 1 e 2. EP2: veja. EP1: veja

INF 1620 P2-23/10/04 Questão 1 Nome:

Transcrição:

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 O sistema deve informar se um determinado livro está ou não disponível nas estantes Caso o livro não esteja disponível, o usuário poderá aguardar pela liberação do livro se cadastrando em uma fila de espera Quando o livro for devolvido e liberado, o primeiro da fila deve ser contatado para vir buscá-lo 2 1

Problema Estatísticas 120.000 livros 1 fila de espera para cada livro No máximo 1000 pessoas ficam esperando por livros da biblioteca No máximo 30 pessoas ficam esperando um mesmo livro 3 Problema Como representar/estruturar o problema? 4 2

Soluções Alternativa 1 Reservar espaço para 120.000 filas (uma para cada livro), com capacidade para 30 pessoas 120.000 vetores de 30 elementos Espaço reservado para 3.600.000 pessoas Problema? 5 Soluções Alternativa 1 Reservar espaço para 120.000 filas (uma para cada livro), com capacidade para 30 pessoas 120.000 vetores de 30 elementos Espaço reservado para 3.600.000 pessoas Problema? Muito espaço reservado não é utilizado Mesmo que a fila de um livro seja alocada dinamicamente quando aparece alguém para espera, nada garante que ela será usada por completo 6 3

Soluções Alternativa 2 Alocar espaço para 1000 elementos Todas as 120.000 filas compartilham o mesmo espaço Problema? 7 Soluções Alternativa 2 Alocar espaço para 1000 elementos Todas as 120.000 filas compartilham o mesmo espaço Problema? Como 120.000 filas podem compartilhar a memória reservada a elas? Como várias estruturas podem compartilhar um espaço de memória? 8 4

Compartilhamento de memória 9 Compartilhamento de memória 10 5

Compartilhamento de memória Perguntas Como saber qual é o topo de uma pilha dessas (x, y, z)? Como saber qual elemento vem logo abaixo do topo (o próximo na seqüência)? 11 Compartilhamento de memória Perguntas Como saber qual é o topo de uma pilha dessas (x, y, z)? Como saber qual elemento vem logo abaixo do topo (o próximo na seqüência)? Alocação encadeada! 12 6

Alocação seqüencial vs. encadeada Alocação seqüencial: elementos são alocados em seqüência; seqüência física 13 Alocação seqüencial vs. encadeada Alocação encadeada: elementos não estão necessariamente em posições adjacentes de memória; seqüência lógica ou virtual 14 7

Listas encadeadas Definição: uma lista encadeada L, com n blocos de memória B1,B2,...,Bn é definida pelas seguintes características: Cada bloco de memória Bi, ou cada nó da lista, tem pelo menos dois campos: Informação a ser armazenada Indicação do próximo elemento da lista Os blocos de memória não estão necessariamente em sequência física na memória O acesso aos elementos da lista ocorre através de um indicador do início da lista (o primeiro elemento); o acesso aos demais elementos ocorre através da indicação de quem é o próximo na sequência O último nó da lista indica um endereço inválido, chamado NIL ou NULL 15 Representação 16 8

Lista Listas: lineares ou não Exemplos de listas lineares e não lineares? Definição de lista linear Estrutura de dados que armazena elementos de forma alinhada, ou seja, um após o outro Estática vs. Dinâmica & Sequencial vs. Encadeada 17 Lista O que fizemos até agora? Listas lineares Sequencial Encadeada Estática?? Dinâmica?? Listas não lineares Sequencial Encadeada Estática?? Dinâmica?? 18 9

Lista O que fizemos até agora? Listas lineares Sequencial Encadeada Estática Pilha e fila? Dinâmica?? Listas não lineares Sequencial Encadeada Estática?? Dinâmica?? 19 Lista Lista encadeada e dinâmica Uma das representações mais interessantes e flexíveis que há Aplicável para diversos problemas 20 10

Possível declaração Como declarar um desses blocos da lista? 21 Possível declaração struct no { char info; struct no *next; } struct no *p; p=(struct no*) malloc(sizeof(struct no)); p 22 11

Possível declaração typedef struct no { char info; struct no *next; } No; No *p; p=(no*) malloc(sizeof(no)); p 23 Possível declaração typedef struct no { char info; struct no *next; } No; É possível tirar esse nome? No *p; p=(no*) malloc(sizeof(no)); p 24 12

Implementação da lista encadeada Dependendo das exigências, indicadores do início e do fim da lista podem ser necessários Acesso e manipulação dos elementos da lista 25 #include <stdio.h> struct no { char info; struct no *next; }; struct no *ini, *fim, *p; int main(void) { ini=null; fim=null; p=(struct no*) malloc(sizeof(struct no)); p->info='a'; p->next=null; ini=p; fim=p; p=(struct no*) malloc(sizeof(struct no)); p->info='b'; p->next=null; fim->next=p; fim=p; p=ini; while (p!=null) { printf("%c ",p->info); p=p->next; } p=ini; while (p!=null) { ini=ini->next; free(p); p=ini; } Exemplo Qual o resultado da execução desse programa? } system("pause"); return 0; 26 13

Declaração da lista Com princípios de TAD, como fazer a declaração? Considerando somente ponteiros de início e fim para a lista 27 Declaração da lista typedef char elem; typedef struct bloco { elem info; struct bloco *prox; } no; typedef struct { no *inicio, *fim; } Lista; Lista L; 28 14

Operações genéricas sobre lista Considerando a representação de lista anterior, implemente o TAD lista com as seguintes operações cria-lista finaliza-lista inserir-na-lista eliminar-da-lista recursiva e não recursiva tamanho recursiva e não recursiva esta-na-lista recursiva e não recursiva imprimir 29 Pilha Lista linear: pilha Represente graficamente o funcionamento da pilha, representando a pilha vazia, a entrada e a saída de elementos Quais e quantos ponteiros são necessários? 30 15

Pilha 31 Exercício Implementar as rotinas da pilha utilizando a lista encadeada e dinâmica Create, Push, Pop, IsEmpty 32 16

Fila Lista linear: fila Represente graficamente o funcionamento da fila, representando a fila vazia, a entrada e a saída de elementos Quais e quantos ponteiros são necessários? 33 34 17

Exercício Implementar as rotinas da fila utilizando a lista encadeada e dinâmica Cria, Entra, Sai, IsEmpty, IsFull 35 18