Estrutura de Dados (DPADF 0056) Aula 8 – Estr. Clássicas - Lista Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior.

Slides:



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

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,
Recursividade Prof. Rosana Palazon.
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
TADS – Tipos Abstratos de Dados
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.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Encadeadas.
Algoritmos e Estruturas de Dados
ALGORITMOS E ESTRUTURAS DE DADOS
Listas Encadeadas Raquel O. Prates, Luiz Chaimowicz, Jussara Almeida
INTELIGÊNCIA ARTIFICIAL
Implementação de FILAS com Alocação Dinâmica
Lista Encadeada Circular Lista Duplamente Encadeada
Árvore Binária de Busca
Prof. Alessandro Gonçalves
Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco.
Pilha dinâmica Prof.° Jean Daniel Henri Merlin Andreazza
Estrutura de Dados (DPADF 0056) Aula 5 – Estr. Clássicas - Fila Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior.
Lógica de Programação Aula 25 Prof. Auler Gomes. Introdução - subrotina Muitos problemas grandes ou nem tão grandes, mas de solução mais complexa podem.
Estrutura de Dados (DPADF 0056)
Estrutura de Dados (DPADF 0056) Aula 7 – Encadeamento de Memória Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior.
Respostas dos Exercícios. Lista 1 1.a) Escreva uma função que receba como parâmetro uma temperatura dada em graus Fahrenheit e retorna a temperatura.
Capítulo II Listas Lineares Gerais CES-11 ALGORITMOS E ESTRUTURAS DE DADOS.
Disciplina: Estrutura de Dados Professor: Jeovane Reges Caxias – MA 2015 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO.
Supervisão e Redes Industriais Tutorial E3 Elipse Capítulo 14 ARMAZENAMENTO DE DADOS Felipe Domeni, Gabriel Martin, Leandro Gomes Rafael Benoliel, Tiago.
INF1007: Programação 2 8 – Listas Encadeadas
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas – 2017
Vetores e Matrizes em C/C++
Ordenação dos Elementos de um Vetor - Bubble Sort e Quick Sort .
Sistemas de Controle III N8SC3
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
INE5408 Estruturas de Dados
Capítulo II – Listas Lineares Gerais
Algoritmos e Estruturas de Dados I
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas
INF1007 – Programação 2 9 – Pilhas
INF1007: Programação 2 9 – Tipos Abstratos de Dados
Métodos de Pesquisa e Ordenação
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas
Estrutura de dados Pilhas e filas
Capítulo IV – Árvores Gerais
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas
Métodos de Pesquisa e Ordenação
Árvores.
Capítulo IV – Árvores Gerais
FUNDAMENTO DE PROGRAMAÇÃO PROF. WELLINGTON FRANCO
Algoritmos e Estruturas de Dados I
INE 5201 – INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS
Listas Encadeadas.
Disciplina: Álgebra Linear e Geometria Analítica
Estruturas de Dados Dinâmicas
Tipos Abstratos de Dados
Função de buscar elemento na lista simplesmente encadeada
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS
Instalação e Manutenção de Computadores Técnico em Informática MAI1
Filas Prof. Kariston Pereira
Prof. Rafael Mesquita Fila Prof. Rafael Mesquita
Computação Eletrônica Vetores e Matrizes
Estruturas de Dados em C
Filas.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
Estruturas definidas pelo programador
Prof. Rafael Mesquita Listas Encadeadas Prof. Rafael Mesquita
Ementário Noções de hardware e software. Conceitos Fundamentais.
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas – 2019
Transcrição da apresentação:

Estrutura de Dados (DPADF 0056) Aula 8 – Estr. Clássicas - Lista Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati –

Conjunto de dados ordenados com número variado de elementos

Listas Também conhecida por: lista linear, lista encadeada, lista ligada; Dá-se o nome de lista ao TAD que armazena um conjunto de elementos denominados de “nodos” (itens da lista); Em geral há uma relação de ordem entre os nodos de uma lista; ▫ Ordem de inclusão; ▫ Ordem crescente; ▫ Ordem decrescente; ▫ etc.

Listas Pode ser implementada com diferentes estratégias de armazenamento: ▫ Sequencial (com contiguidade física); ▫ Encadeada (com uso de ponteiros). Um elemento de uma lista pode ser um dado primitivo ou um dado composto; Uma lista é homogênea quanto todos seus elementos são do mesmo tipo ou heterogênea quando não o são;

Listas Diferentemente dos TAD Pilha e Fila a Lista não impõe uma regra fixa para inserção e retirada de elementos; ▫ Um elemento pode ser incluído ou retirado de qualquer lugar da lista desde que essa ação mantenha a relação de ordem existente; ▫ Um elemento em uma lista pode possuir um ou mais campos de encadeamento (elos);

Aplicações de Listas Indexação em banco de dados ▫ Cada índice é uma lista de registros do banco de dados para um determinado critério de ordenação; Conjuntos ▫ 7 dias da semana (segunda-feira antecede a terça-feira e vem depois do o domingo); ▫ 12 meses do ano; Qualquer lista que precise de manipulação (inclusão, exclusão, pesquisa, etc.)

Implementação de Listas Uma lista pode ser implementada de duas formas: ▫ Lista sequencial, onde cada elemento ocupa uma posição sucessiva ao elemento anterior (um vetor é tipicamente uma lista sequencial); ▫ Lista encadeada, onde a ordem dos elementos é dada pelos apontadores de seus elos; ESTRUTURA E S T R U R T U A

Etapa 1 – Definição Conceitual struct elemento { char conteudo; struct elemento* proximo; } typedef struct elemento Elemento; Como representar uma lista?

Se eu guardar o primeiro elemento (o cabeça) da lista basta seguir o encadeamento S T R U T Cabeça E U R A Ø

O que se pode fazer com uma lista O S Cabeça S Pesquisar elementos O S Cabeça S Excluir elementos O S Cabeça S Incluir elementos O S Cabeça S Excluir uma lista O S Cabeça S Exibir os elementos

Etapa 2 – Definição das Operações int incluirElemento( Elemento** inicial, Elemento** posicao, char v); Elemento* pesquisarElemento(Elemento* inicial, char v) int removerElemento( Elemento** inicial, Elemento* posicao, Elemento** anterior); void liberarLista(Elemento* inicial); void mostrarLista(Elemento* inicial); Melhor aprofunda r!

int incluirElemento(...) incluirElemento(Elemento** inicial, Elemento** posicao, char v) S T Cabeça E R Ø U R R 1º elemento da lista elemento anterior (a inclusão ocorre após ele) valor a ser inserido Situação 1 – A lista não está vazia Aloca-se espaço para um novo elemento; O novo elemento aponta para o elemento apontado por “posição” e “posição” aponta para o novo elemento E a situação 2? (se a lista está vazia)

Elemento* pesquisarElemento(...) Elemento* pesquisarElemento(Elemento* inicial, char v); S T Cabeça E R Ø U R Retorno da pesquisa U valor a ser pesquisado A partir do 1º elemento verifica-se sequencialmente se o conteúdo do elemento é igual ao valor pesquisado Se o elemento for encontrado seu endereço é retornado (em não o encontrando retorna-se vazio) 1º elemento da lista E = U × S = U × T = U × R = U × ok U = U

int removerElemento(Elemento** inicial, Elemento* posicao, Elemento** anterior) int removerElemento(...) S T Cabeça E R Ø U R 1º elemento da lista elemento anterior (a exclusão ocorrerá após ele) O elemento anterior aponta para o elemento apontado por aquele que será excluído ; Elemento que será excluído Libera-se a memória do elemento a ser excluído; × E se o elemento inicial for excluído?

void liberarLista(...) void liberarLista(Elemento* inicial); S T Cabeça E R Ø U R Partindo-se do 1º elemento guarda-se o indicador (ponteiro) para o próximo elemento e elimina-se o atual elemento. 1º elemento da lista × × × × × temp × ×

void mostrarLista(...) void mostrarLista(Elemento* inicial); Diferentemente de Pilhas e Filas uma Lista permite a exibição de seus elementos sem que isso comprometa ou destrua a Lista. Basta conhecer o endereço do primeiro elemento e percorrer todos os elos dos apontadores.

Etapa 3 – Implementação e Utilização Elemento* cabeca = NULL; incluirElemento(&cabeca, NULL, ‘A’); incluirElemento(&cabeca, NULL, ‘T’); Elemento *aux1, *aux2; aux1 = pesquisarElemento(cabeca, ‘T’); if (aux1 != NULL) { printf("Elemento ‘%c' encontrado",aux1->conteudo); incluirElemento(&cabeca, &aux1, ‘H’); } aux2 = pesquisarElemento(cabeca, ‘H’); removerElemento(&cabeca, aux2, &aux1); mostrarLista(cabeca); liberarLista(cabeca);

Exercícios para fixação

Lista de Tarefas (TO DO List) Que tal implementar um TAD Lista para guardar sua lista de tarefas? ▫ A lista deve ser construída de acordo com as tarefas mais prioritárias (que devem ser resolvidas primeiro); ▫ Implemente operações para mudar a prioridade dos itens da lista;