Introduo Programao Engenharia da Computao Aula Prtica 11
- Slides: 11
Introdução à Programação Engenharia da Computação Aula Prática 11 Lista Encadeada Monitoria 2009. 1
Tipos de Estruturas de Dados As estruturas de armazenamento de dados podem ser classificadas da seguinte maneira: • Estruturas estáticas: podem armazenar até uma quantidade fixa de elementos, que deve ser indicada quando ela é criada; • Estruturas dinâmicas: o tamanho e a capacidade variam de acordo com a demanda, a medida que o programa vai sendo executado. Em geral, são construídas com ponteiros/referências.
Estruturas Estáticas: Arrays Estruturas que armazenam uma quantidade fixa de elementos do mesmo tipo. O acesso a um elemento é feito a partir do índice do elemento desejado. A A[0] 0 1 2 A[3] . . . A[n-1] 3 . . . n-1 Arrays não podem armazenar mais elementos do que o seu tamanho, logo, o tamanho deve ser o máximo necessário.
Estruturas Estáticas: Arrays Quando a quantidade de elementos é variável, o uso de arrays pode desperdiçar memória, já que nem todas as suas posições são necessariamente ocupadas. . A 0 1 2 Espaço utilizado 3 . . . n-1 Espaço desperdiçado
Estruturas Dinâmicas: Listas Estruturas criadas para evitar o desperdício de memória, alocando apenas o espaço necessário para seus dados. A construção é feita a partir de ponteiros/referências. Antes da inserção: Após a inserção: 5 8 1 4 3
Listas Encadeadas Ao contrário de um array, uma lista não pode acessar seus elementos de modo direto, e sim, de modo seqüencial, ou seja, um por vez A L 3 3 1 1 2 2 7 7 A estrutura Lista geralmente contém uma referência para o primeiro elemento da lista, a partir do qual todos os outros poderão ser acessados.
Listas Encadeadas Armazenam uma quantidade variável de elementos do mesmo tipo Lista de inteiros L 5 8 1 4 Lista de referências para arrays de char L “Algoritmos” “Estruturas” “Dados”
Listas Simplesmente Encadeadas Listas são formadas por estruturas chamadas nós. Um nó é uma estrutura auto-referencial, isto é, contém uma referência para outra estrutura do mesmo tipo L Dado armazenado no nó atual 3 1 Referência para o próximo elemento da lista 2 Indicador do fim da lista (referência null)
Exemplo de Implementação struct No { //dados. . . struct No *proximo; }; struct Lista { struct No * raiz; };
Exemplo de Implementação typedef struct no { //dados. . . struct no *proximo; }No; typedef struct _lista { No * raiz; }Lista;
Exercícios 1. Escreva um programa que crie uma lista de acordo com elementos dados pelo usuário. O programa deve permitir que ao usuário inserir, buscar ou remover elementos da lista.