Você está na página 1de 57

Estrutura

de Dados

Introduo

O que so estruturas de dados?

Em Cincia da computao, uma estrutura de dados um


modo particular de armazenamento e organizao de dados
em um computador de modo que possam ser usados de modo
eficiente

Benefcios?

Organizao da informao
Melhora o desempenho
Proporciona o reuso de cdigo
Proporciona interoperabilidade
Diminui custos

Objetivos Gerais

Introduzir conceitos referentes utilizao de


estruturas de dados em problemas envolvidos
na programao, familiarizando os alunos com
as principais estruturas de dados, e suas
correspondentes abstraes.
Final da aula o aluno poder projetar e
implementar diversas estruturas de dados,
conhecendo suas vantagens e desvantagens.

Observao

Nesta aula so apresentadas algumas


estruturas de dados, com nfase naquelas que
so utilizadas no decorrer da aula. Assim,
algumas estruturas de importncia para outros
tipos de aplicaes como a representao de
rvores, grafos e matrizes esparsas,
fundamental para a rea de computao
cientfica -- no esto descritas aqui.

Principais tipos de estruturas de dados

Lista

Fila

Pilha

rvores

Grafos

Tabela Hashing

Etc.

Aplicaes

Estruturas de dados so muito utilizadas em


aplicaes de nvel mais baixo, tais como:

Implementao de estruturas de banco de dados

Compiladores e interpretadores

Editores de texto

Kernel de sistemas operacionais

Redes de computadores

IA

Etc.

Lista

Definio

Uma estrutura do tipo Lista uma sequncia


de elementos do mesmo tipo.
Seus elementos possuem estrutura interna
abstrada, ou seja, sua complexidade
abstrada e no afeta o seu funcionamento.

Definio

Um Lista pode possuir N (N >= 0) elementos.

Se N = 0, dizemos que a Lista esta vazia.

Aplicaes:

Cadastros de funcionrios;

Itens de estoque;

Cartas de baralho;

Etc.

Definio

Em uma Lista podemos realizar as seguintes operaes bsica:

Criao da Lista;
Insero de um elemento;
Excluso de um elemento;
Acesso a um elemento;
Destruio da lista;
Etc.

Essas operaes dependem do tipo de alocao de memria


usada

Esttica;

Dinmica

Alocao Esttica

O espao de memria alocado no momento da


compilao
Exige a definio do nmero mximo de elementos da
Lista
Acesso sequencial: elementos consecutivos na
memria

Alocao Dinmica

Espao de memria alocado em tempo de execuo


A Lista cresce medida que novos elementos so
armazenados, e diminui medida que elementos so
removidos
Acesso encadeado: cada elemento pode estar em uma rea
distinta da memria. Para acessar um elemento, preciso
todos os seus antecessores na Lista.

Lista Sequencial / Linear Esttica

um tipo de Lista onde o sucessor de um


elemento ocupa a posio fsica seguinte do
mesmo (uso de array).

Vantagens do uso de Arrays

Acesso rpido e direto aos elementos (ndice)

Tempo constante para acessar um elemento

Facilidade em modificar informaes

Desvantagens do uso de Arrays

Definio previa do tamanho do array


Dificuldade para inserir e remover um elemento
entre outros dois: necessrios deslocar os
elementos

Quando utilizar essa Lista?

Listas pequenas

Insero / remoo apenas no final da Lista

Tamanho mximo bem definido

A busca a operao mais frequente

Implementao de Lista

Criar uma lista

Destruir uma lista

Algumas informaes bsica sobre Lista:

Tamanho?
Est cheia?
Est vazia?

Insero na Lista

Existem 3 tipos de insero:

Incio
Meio
final

Insero na Lista

Tambm existe o caso onde a insero feita


em uma lista que est vazia.
Cuidado: no se pode inserir numa lista vazia

Insero no final da Lista

Mais fcil

Insero no incio

Necessita de deslocamento.

Insero de forma Ordenada

Talvez seja necessrio deslocar os elementos.

Remoo na Lista

Existem 3 tipos de remoo:

Incio
Meio
Final

Remoo no Incio

Desloca todos os elementos posteriores.

Remoo em qualquer lugar

Talvez desloque os elementos

Remoo no Final

Mas facil.

Importante

Os 3 tipos de remoo trabalham juntos. A remoo


sempre remove um elemento especfico da lista, o
qual pode estar no incio, no meio ou no final da lista
Cuidado: no se pode remover de uma lista vazia

Consulta na Lista

Existem 2 maneiras de consultar um elemento


de uma lista:

Pela posio (acesso direto)


Pelo contedo (necessidade de busca)

Fila

Definio

Uma estrutura do tipo Fila uma sequencia de elementos


do mesmo tipo, como as listas.
Seus elementos possuem estrutura interna abstrada, ou
seja, sua complexidade abstrada e no afeta o seu
funcionamento.

Definio

Uma Fila um tipo especial de Lista


Inseres e excluses de elementos ocorrem
nas extremidades da lista.
Aplicaes:

Controle de fluxo;
Recursos compartilhados (impresora, transaes de
banco de dados, etc);
Etc.

Definio

Em uma Fila podemos realizar as seguintes operaes bsica:

Criao da fila;
Insero de um elemento no final;
Remoo de um elemento no incio;
Acesso a um elemento no incio;
Destruio da fila;
Etc.

Essas operaes dependem do tipo de alocao de memria


usada

Esttica;

Dinmica

Alocao Esttica

O espao de memria alocado no


momento da compilao
Exige a definio do nmero mximo de
elementos da Fila
Acesso sequencial: elementos
consecutivos na memria

Alocao Dinmica

Espao de memria alocado em tempo de


execuo
A Fila cresce medida que novos elementos so
armazenados, e diminui medida que
elementos so removidos
Acesso encadeado: cada elemento pode estar
em uma rea distinta da memria. Para acessar
um elemento, preciso todos os seus
antecessores na Fila.

Fila Esttica

Tipo de Fila onde o sucessor de um elemento


ocupa a posio fsica seguinte do mesmo (uso
de array).

Implementao de Fila

Criar uma fila

Destruir uma fila

Algumas informaes bsica sobre fila:

Tamanho?
Est cheia?
Est vazia?

Insero na Fila

Em uma Fila a insero sempre no final


Tambm existe o caso onde a insero feita
em uma fila que est vazia
Cuidado: no se pode inserir numa fila cheia

Insero na Fila

Remoo na Fila

Em uma Fila a remoo sempre no incio


Cuidado: no se pode remover de uma fila
vazia

Remoo na Fila

Consulta na Fila

Em uma Fila a consulta se d apenas ao


elemento que est no incio.

Consulta na Fila

Pilha

Definio

Uma estrutura do tipo Pilha uma sequencia de


elementos do mesmo tipo, como as listas e filas.
Seus elementos possuem estrutura interna abstrada, ou
seja, sua complexidade abstrada e no afeta o seu
funcionamento.

Definio

Uma Pilha um tipo especial de Lista


Inseres e excluses de elementos ocorrem
apenas no incio da lista.
Aplicaes:

Analise de uma expresso matemtica;


Avaliao de expresso ps-fixa;
Converter uma expresso in-fixa para ps-fixa;
Converter um nmero decimal para binrio
Etc.

Definio

Em uma Pilha podemos realizar as seguintes operaes


bsica:

Criao da pilha;
Insero de um elemento no incio;
Excluso de um elemento do incio;
Acesso a um elemento do incio;
Destruio da fila;

Essas operaes dependem do tipo de alocao de


memria usada

Esttica;

Dinmica

Alocao Esttica

O espao de memria alocado no


momento da compilao
Exige a definio do nmero mximo de
elementos da Pilha
Acesso sequencial: elementos
consecutivos na memria

Alocao Dinmica

Espao de memria alocado em tempo de


execuo
A Pilha cresce medida que novos elementos
so armazenados, e diminui medida que
elementos so removidos
Acesso encadeado: cada elemento pode estar
em uma rea distinta da memria. Para acessar
um elemento, preciso todos os seus
antecessores na Fila.

Implementao de Pilha

Criar uma pilha

Destruir uma pilha

Algumas informaes bsica sobre pilha:

Tamanho?
Est cheia?
Est vazia?

Insero na Pilha

Em uma Pilha a insero sempre no seu incio


Tambm existe o caso onde a insero feita em uma
pilha que est vazia.
Cuidado: no se pode inserir em uma pilha cheia

Remoo na Pilha

Em uma Pilha a remoo sempre no seu


inicio.
Cuidado: no se pode remover de uma pilha
vazia.

Consulta na Pilha

Em uma Pilha a consulta se d apenas ao


elemento que est no seu incio.

Referncia Bibliogrfica

Cormen, Thomas H. et. al. Algoritmos: Teoria e Prtica. Editora


Campus, 2002.

Ziviani, Nivio. Projeto de Algoritmos. Editora Nova Fronteira, 2004.

Sedgewick, Robert. Algorithms in C++. Addison Wesley, 2000.

Manber, Udi. Introduction to Algorithms: A Creative Approach. Addison


Wesley, 1989.
Sedgewick, Robert. and Flajolet, Philippe. An Introduction to the
Analysis of Algorithms. Addison Wesley, 1996.
https://programacaodescomplicada.wordpress.com/indice/estrutura-dedados/
http://pt.slideshare.net/fabriciolopessanchez/estrutura-de-dadosconceitos-fundamentais