Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www. decom. ufop

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
Estruturas de Dados Marcio Gonçalves.
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
TADS – Tipos Abstratos de Dados
Gerenciamento de Arquivos, Páginas e Registros
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Árvores.
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Filas David Menotti Estruturas de Dados I DECOM – UFOP.
David Menotti Estruturas de Dados I DECOM – UFOP
HeapSort Filas de Prioridade – Heap
Pesquisa em Memória Primária – Árvores de Busca
Aula T11 – BCC202 Pilhas Túlio Toffolo
David Menotti Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
David Menotti Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
Aula T12 – BCC202 Listas Túlio Toffolo
David Menotti Estruturas de Dados I DECOM – UFOP
Algoritmos e Estruturas de Dados I
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
AED – Algoritmos e Estruturas de Dados
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Construção de Compiladores
Instrutor: Nilo Menezes
Robson Godoi / Sandra Siebra
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Encadeadas.
Algoritmos e Estruturas de Dados
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Aula prática 12 Listas Encadeadas
Introdução a Estruturas de Dados Avançadas Utilizando Linguagem C
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária
Listas lineares Denise Guliato Faculdade de Computação – UFU
Aula 01 BCC202 - Estrutura de Dados I Túlio Toffolo
INTELIGÊNCIA ARTIFICIAL
Tipos Abstratos de Dados
Lista Encadeada Circular Lista Duplamente Encadeada
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Listas, Filas e Pilhas Katia Guimarães.
INE 5384 Estruturas de Dados Prof a. Patrícia Vilain
Estruturas de Dados Aula 9: Listas (parte 1)
Ceça Moraes – Introdução à Programação SI1
Estruturas de Dados Aula 11: TAD Pilha
Árvore Binária de Busca
Listas Simplesmente Encadeadas
Lista Linear Base para outras estruturas
Objetivos Ao concluir esta Disciplina espera-se que os alunos sejam capazes de: Distinguir os conceitos de Estrutura e Dados; Compreender o que são, como.
Estrutura de Dados Aula 3 - Listas
Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
UNIVERSIDADE FEDERAL DE MINAS GERAIS Listas Lineares Cristiano Arbex Valle Vinicius Fernandes dos Santos
Transcrição da apresentação:

Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www. decom. ufop Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www.decom.ufop.br/toffolo

Uso do Moodle Entrega dos trabalhos, atividades práticas e listas de exercício serão feitas via Moodle: www.decom.ufop.br/moodle Importante: o aluno deve se cadastrar na disciplina BCC202 até quinta-feira, dia 23/09, sob pena de perder parte dos pontos extras e de participação.

Ementa do Curso Tipos Abstratos de Dados / Alocação Dinâmica Análise de Algoritmos e Recursividade Estruturas de dados Listas, filas, pilhas e árvores Métodos de ordenação (por comparação) Selectsort, Insertsort, Bubblesort, Mergesort, Shellsort, Heapsort, Quicksort, etc. Métodos de pesquisa Simples, binária, Hashing, árvores digitais

Listas Forma simples de interligar conjuntos Estrutura que define as operações inserir, retirar e localizar são definidas. Podem crescer ou diminuir de tamanho durante a execução de um programa, de acordo com a demanda. Itens podem ser acessados, inseridos ou retirados de uma lista.

Listas Outras operações: Concatenação de duas ou mais listas Partição de lista em duas ou mais listas Vantagens: Manipulação de quantidade imprevisível de dados Manipulação de dados de formato também imprevisível

Listas Especialmente úteis em aplicações do tipo: Manipulação simbólica Simulação Gerência de Memória Compiladores Etc.

Listas - Definição Sequência de zero ou mais itens x1, x2, ..., xn na qual xi é de um determinado tipo e n representa o tamanho da lista linear. Sua principal propriedade estrutural envolve as posições relativas dos itens em uma dimensão. Assumindo n ≥ 1, x1 é o primeiro item da lista e xn é o último item da lista.

Listas - Definição Sua principal propriedade estrutural envolve as posições relativas dos itens em uma dimensão. xi precede xi+1 para i = 1, 2, ..., n – 1 xi sucede xi-1 para i = 2, 3, ..., n O elemento xi é dito estar na i-ésima posição da lista.

O conjunto de operações a ser definido depende de cada aplicação. TAD Lista O que deveria conter? Representação do tipo da lista Conjunto de operações que atuam sobre a lista Quais operações deveria fazer parte da TAD? O conjunto de operações a ser definido depende de cada aplicação.

TAD Listas – Operações Um conjunto de operações necessário a uma maioria de aplicações é: Criar uma lista linear vazia. Inserir um novo item imediatamente após o i-ésimo item. Retirar o i-ésimo item. Localizar o i-ésimo item para examinar e/ou alterar o conteúdo de seus componentes.

TAD Listas – Operações Combinar duas ou mais listas lineares em uma lista única. Dividir uma lista linear em duas ou mais listas. Fazer uma cópia da lista linear. Ordenar os itens da lista em ordem ascendente ou descendente, de acordo com alguns de seus componentes. Pesquisar a ocorrência de um item com um valor particular em algum componente.

Exemplo de Protótipo de Lista Exemplo de Conjunto de Operações: FLVazia(Lista). Faz a lista ficar vazia. LInsere(Lista, x). Insere x após o último item da lista. LRetira(Lista, p, x). Retorna o item x que está na posição p da lista, retirando-o da lista e deslocando os itens a partir da posição p+1 para as posições anteriores. LEhVazia(Lista). Esta função retorna true se lista vazia; senão retorna false. LImprime(Lista). Imprime os itens da lista na ordem de ocorrência.

Implementação de uma Lista Várias estruturas de dados podem ser usadas para representar listas lineares, cada uma com vantagens e desvantagens particulares. As duas representações mais utilizadas são: Implementação por arrays. Implementação por ponteiros.

Implementação de Lista por Array Os itens da lista são armazenados em posições contíguas de memória. A lista pode ser percorrida em qualquer direção. A inserção de um novo item no final tem custo O(1).

Implementação de Lista por Array A inserção de um novo item no meio da lista requer um deslocamento de todos os itens... Custo O(n) Retirar um item do início da lista requer um deslocamento de itens para preencher o espaço deixado vazio... Custo O(n)

Estrutura da Lista Usando Array Os itens são armazenados em um array de tamanho suficiente para armazenar a lista. O campo Último aponta para a posição seguinte à do último elemento da lista. O i-ésimo item da lista está armazenado na (i-1)-ésima posição do array, 0≤i<Último. A constante MaxTam define o tamanho máximo permitido para a lista.

Estrutura da Lista Usando Array #include <sys/time.h> #include <stdio.h> #include <stdlib.h> #define InicioArranjo 0 #define MaxTam 1000 typedef int TChave; typedef int Apontador; typedef struct { TChave Chave; /* outros componentes */ } TItem; TItem Item[MaxTam]; Apontador Primeiro, Ultimo; } TLista;

Estrutura da Lista Usando Array void FLVazia(TLista *pLista) { pLista->Primeiro = InicioArranjo; pLista->Ultimo = pLista->Primeiro; } /* FLVazia */ int LEhVazia(TLista* pLista) return (pLista->Ultimo == pLista->Primeiro); } /* LEhVazia */ int LInsere(TLista* pLista, TItem x) if (pLista->Ultimo == MaxTam) return 0; /* lista cheia */ pLista->Item[pLista->Ultimo++] = x; return 1; } /* LInsere */

Estrutura da Lista Usando Array int LRetira(TLista* pLista, Apontador p, TItem *pX) { if (LEhVazia(pLista) || p >= pLista->Ultimo) return 0; int cont; *pX = pLista->Item[p]; pLista->Ultimo--; for (cont = p+1; cont <= pLista->Ultimo; cont++) pLista->Item[cont - 1] = pLista->Item[cont]; return 1; } /* LRetira */

Estrutura da Lista Usando Array void LImprime(TLista* pLista) { int i; for (i = pLista->Primeiro; i < pLista->Ultimo; i++) printf("%d\n", pLista->Item[i].Chave); } /* LImprime */

Vantagens de Listas que usam Arrays Economia de memória (os apontadores são implícitos nesta estrutura). Acesso a qualquer elemento da lista é feito em tempo O(1).

Desvantagens de Listas que usam Arrays Custo para inserir itens da lista pode ser O(n) Custo para retirar itens da lista pode ser O(n) Quando não existe previsão sobre o crescimento da lista, o array que define a lista deve ser alocado de forma dinâmica.

Exercícios Implementar na TAD Lista as funções: Concatenar/intercalar (Merge) Dividir uma lista em várias Copiar uma lista Ordenar (sort) por ordem crescente/decrescente Pesquisar/Localizar/Buscar (search)