aula estrutura de dados - tad - listas - 1
DESCRIPTION
Estrutura de Dados aula 2TRANSCRIPT
Roteiro Dados Simples e Compostos Tipo Abstrato de Dados (TAD)
Ex: Ponto em R2
Ex: Números racionais Listas (Conceituação)
Listas Encadeadas O TAD de uma Lista Encadeada
Ex: Implementação na linguagem C
Dados Simples
Referência a um elemento, com domínio e conjunto de operações prédefinido
● Dados numéricos (e.g. inteiro, real)● Dados simbólicos (e.g. caracteres)
Dados Compostos
Referência a um conjunto de elementos com domínio e conjunto de operações a ser estabelecido
● Homogêneos (e.g. vetor, matriz, cadeia decaracteres (“string”))
● Não necessariamente homogêneo (e.g. Estrutura)● Conjuntos, formas de inclusão, acesso,
organização, algoritmos eficientes para uso emconjuntos e organizações diversas. (e.g.Sequências, prioridade, hierárquicos, fluxos)
Tipo Abstrato de Dados (TAD)● Modelo Matemático● Implementa em um conjunto de elementos:– Operações específicas– Semântica Especial– A implementação usa as estruturas básicas de uma
linguagem de programação formando uma nova estrutura
● Abstrai detalhes após implementação, ou seja, realiza um encapsulamento do modelo matemático
Exemplos de Modelos matemáticos que poderiam ser implementados como TADs
● ponto, segmento de reta, círculo, númerosracionais, números complexos
Ex: Construindo um TAD para ponto (Celes, W.; Cerqueira, R. & Rangel, J.L. Introdução a Estruturas de Dados, Campus, RJ, 2004.)
Ex: cont. em um arquivo ponto.c
Ex: cont. em um arquivo ponto.c
Exemplo: números racionais
Exemplo em C
Exemplo em C
Exemplo em C
Trabalhando com Conjuntos
Listas● Uma lista é uma estrutura flexível que pode
aumentar ou diminuir seu tamanho sob demanda● Elementos podem ser acessados, inseridos,
apagados, em qualquer posição da lista● Listas podem ser concatenadas ou repartidas em
sublistas
Listas● Matematicamente uma lista é uma sequência de
0 ou mais elementos de um tipo específico
● O número n de elementos da lista é o seu tamanho
● n sendo igual a 0 (zero) temos uma lista vazia
● Uma posição após o último elemento da lista é referido como o fim da lista
Como formar um TAD de Listas?● Definições de uma lista?● Qual o conjunto básico de operações de uma lista?– Inserir (x, p, L): inserir x na posição p da lista L – Deletar (p, L): deletar o elemento na posição p da lista L– ListaVazia(L): criar lista vazia
● outras operações?– Localizar (x, L)– Posterior (p, L), Anterior(p, L)– Primeiro (L)– ImprimirLista (L)
Lista Encadeada, ou Ligada
Lista Encadeada, ou Ligada
Representação de Listas Encadedas
Listas com Cabeça, e sem Cabeça● Com Cabeça: o conteúdo da primeira célula é
irrelevante, serve apenas para marcar o início da lista. A primeira célula é a cabeça da lista.
● Sem Cabeça: o conteúdo da primeira célula é tão relevante quanto das demais (* Usada aqui)
Criando Listas Vazias
Inserindo elementos em uma lista● No começo da Lista
Inserindo elementos em uma lista
Inserindo elementos em lista
Impressão de listas
Verificar se lista está vazia
Busca de elemento em listas
Removendo elementos de listas
Removendo elementos de listas
Liberando listas encadeadas
Comparação de listas encadeadas
Exemplos: listas de inteiros
Exemplos: listas de inteiros
Implementação Recursiva de Listas
Implementação Recursiva de Listas
Implementação Recursiva de Listas
Implementação Recursiva de Listas
Implementação Recursiva de Listas
Exercícios● Escreva uma função que receba uma lista
encadeada e devolva o endereço de um nó que esteja o mais próximo possível do meio da lista. Faça isso sem contar explicitamente o número de nós da lista.
● Escreva uma função que encontre uma célula de conteúdo mínimo. Faça duas versões: uma iterativa e uma recursiva.
● Escreva uma função que copie um vetor para uma lista encadeada. Faça duas versões: uma iterativa e uma recursiva.