Sie sind auf Seite 1von 39

Estrutura de Dados (ED)

Prof. Mrcio Lopes Jnior


22/08/2011 1

Introduo
O que uma Estrutura de Dados (ED)? Tipos de Dados? Estruturas de Dados? e Tipos Abstratos de Dados?

22/08/2011

Embora estes termos sejam parecidos, eles tm significados diferentes. Em linguagens de programao, os tipos de dados de uma varivel define o conjunto de valores que a varivel pode assumir. Por exemplo, uma varivel do tipo lgico pode assumir o valor verdadeiro ou falso.
22/08/2011 3

Uma declarao de varivel em uma linguagem de programao especifica: 1. O conjunto de valores que pode assumir. 2. O conjunto de operaes que podemos efetuar. 3. A quantidade de bytes que deve ser reservada para ela. 4. Como o dado representado por esses bytes deve ser interpretado (por exemplo, uma cadeia de valores pode ser interpretada como um inteiro ou real...).
22/08/2011 4

Ento, tipos de dados podem ser vistos como mtodos para interpretar o contedo da memria do computador. Mas podemos ver o conceito de Tipo de Dados de uma outra perspectiva: no em termos do que um computador pode fazer (interpretar os bits...) mas em termos do que os usurios desejam fazer (somar dois inteiros...)
22/08/2011 5

Este conceito de Tipo de Dado divorciado do hardware chamado Tipo Abstrato de Dado TAD. Estrutura de Dados um mtodo particular de se implementar um TAD. A implementao de um TAD escolhe uma ED para represent-lo. Cada ED construda dos tipos primitivos (inteiro, real, char,...) ou dos tipos compostos (array[vetor], registro,...) de uma linguagem de programao.
22/08/2011 6

No importa que tipo de dados estaremos trabalhando, a primeira operao a ser efetuada em um TAD a criao. Depois, podemos realizar incluses e remoes de dados. A operao que varre todos os dados armazenados num TAD o percurso, podendo tambm ser realizada uma busca por algum valor dentro da estrutura.
22/08/2011 7

Exemplos de TAD
Lineares: - Listas - Pilhas - Filas No Lineares: - rvores - Grafos
22/08/2011 8

Listas
So estruturas formadas por um conjunto de dados de forma a preservar a relao de ordem linear entre eles. Uma lista composta por ns, os quais podem conter, cada um deles, um dado primitivo ou composto. Dado primitivo (simples): Manipula somente um valor. Dado composto (estruturado): Manipula vrios valores ao mesmo tempo.

22/08/2011

Representao
L1 L2 L3

...

Ln-1

Ln

Sendo: L1 o 1 elemento da lista L2 o Sucessor de L1 Ln-1 o Antecessor de Ln Ln o ltimo elemento da lista.


10

22/08/2011

Exemplos de Listas
Lista Telefnica; Lista de clientes de uma agncia bancria; Lista de setores de disco a serem acessados por um sistema operacional; Lista de pacotes a serem transmitidos em um computador em uma rede.

22/08/2011

11

Operaes Realizadas com Listas


Criar uma lista vazia Verificar se uma lista est vazia Obter o tamanho da uma lista Obter/modificar o valor do elemento de uma determinada posio na lista Obter a posio de elemento cujo valor dado Inserir um novo elemento aps (ou antes) de uma determinada posio na lista Remover um elemento de uma determinada posio na lista Exibir os elementos de uma lista Concatenar duas listas
12

22/08/2011

Formas de representao
Seqencial:
Explora a seqencialidade da memria do computador, de tal forma que os ns de uma lista sejam armazenados em endereos seqenciais, ou igualmente distanciados um do outro. Pode ser representado por um vetor na memria principal ou um arquivo seqencial em disco.
L

pato
1

gato
2

cobra
3

anta
4

rato
5

... MAX
13

22/08/2011

Formas de representao
Encadeada:
Esta estrutura tida como uma seqncia de elementos encadeados por ponteiros, ou seja, cada elemento deve conter, alm do dado propriamente dito, uma referncia para o prximo elemento da lista.
Ex: L = pato, gato, cobra, anta, rato
pato
22/08/2011

gato

cobra

anta

rato
14

Lista Seqencial
Uma lista representada de forma seqencial um conjunto de registros onde esto estabelecidas regras de precedncia entre seus elementos. O sucessor de um elemento ocupa posio fsica subseqente. A implementao de operaes pode ser feita utilizando array e registro, associando o elemento a(i) com o ndice i (mapeamento seqencial).
22/08/2011 15

Caractersticas
Os elementos na lista esto armazenados fisicamente em posies consecutivas; A insero de um elemento na posio a(i) causa o deslocamento a direita do elemento de a(i) ao ltimo; A eliminao do elemento a(i) requer o deslocamento esquerda do a(i+1) ao ltimo;

22/08/2011

16

Mas, absolutamente, uma lista seqencial ou vazia ou pode ser escrita como (a(1), a(2), a(3), ... a(n)) onde a(i) so tomos de um mesmo conjunto A. Alm disso, a(1) o primeiro elemento, a(i) precede a(i+1), e a(n) o ltimo elemento.

22/08/2011

17

Assim as propriedades estruturadas da lista permitem responder a questes tais como:


se uma lista est vazia se uma lista est cheia quantos elementos existem na lista qual o elemento de uma determinada posio qual a posio de um determinado elemento inserir um elemento na lista eliminar um elemento da lista
18

22/08/2011

Lista de informaes de produtos de uma empresa TipoNo = registro Nome: string; Codigo: inteiro; Preo: real; fim registro; Const N=100; TipoLista = array [1 .. N] de TipoNo;
22/08/2011 19

Consultar n

22/08/2011

20

Procedimento para Consultar

22/08/2011

21

Praticando
1 X 10
1.

2
15

3
20

4
25

5
30

6
35

10

De acordo com a lista acima, responda: a) Qual o tamanho do vetor? b) Qual informao est na primeira posio da lista? c) Qual informao est na ltima posio da lista? d) Em qual posio do vetor est a informao 25? e) Quantas informaes ainda podem ser gravadas no vetor? f) Faa o esboo da lista para insero da informao 23 no final da lista. g) Faa o esboo da lista para a insero da informao 60 no incio da lista. h) Faa o esboo da lista para a insero da informao 33 na posio 4 do vetor. i) Faa o esboo da lista para remoo da informao na posio 22 22/08/2011 2 do vetor.

Praticando
2) Faa a ED para inserir nmero inteiros em um array de 100 posies. 3) Faa a ED para inserir nmeros reais em um array de 250 posies. 4) Faa a ED para o cadastro de clientes de uma empresa, sendo um vetor de 5000 elementos contendo o registro das seguintes informaes nome, endereo, cidade, telefone, cpf.
22/08/2011 23

Lista Encadeada

22/08/2011

24

Operaes sobre Lista Encadeada

22/08/2011

25

Declarao de Tipos
TipoPtN = ^TipoN; TipoN = registro Info : TipoInfoN; Elo : TipoPtN fim;

22/08/2011

26

Inicializao de LL encadeada

22/08/2011

27

Construo de uma LL encadeada

22/08/2011

28

Construo de uma LL encadeada

22/08/2011

29

Construo de uma LL encadeada

22/08/2011

30

Construo de uma LL encadeada

22/08/2011

31

Construo de uma LL encadeada

22/08/2011

32

Construo de uma LL encadeada

22/08/2011

33

Construo de uma LL encadeada

22/08/2011

34

Construo de uma LL encadeada

22/08/2011

35

Insero no Incio de uma lista encadeada

22/08/2011

36

Insero no Final de uma lista encadeada

22/08/2011

37

Insero no Meio da lista encadeada

22/08/2011

38

Praticando
245 350 451 615 978

1.Diante da lista acima, responda:


a)Qual o tamanho da lista? b)Quanto a lista pode crescer? c)Quantos elementos esto vazios na lista? d)Qual n aponta para a informao 615? e)Qual informao aponta para nil? f) Faa um esboo da lista para a insero da informao 101 no incio da lista. g)Faa um esboo da lista para a insero da informao 993 no final da lista. h)Faa um esboo da lista para a insero da informao 515 no meio da lista. i) Faa um esboo da lista para a remoo da informao 451.
22/08/2011 39

Das könnte Ihnen auch gefallen