Estruturas de dados dinâmicas

Page 1

Estruturas de Dados Din창micas


Estruturas de Dados Dinâmicas Apontadores: Um apontador é um tipo de variável especial. O apontador não contém informação útil, mas só contém o endereço da informação. Um apontador contém o endereço de um lugar na memória Para declarar um apontador usamos a seguinte sintaxe: Var p: pointer;


Estruturas de Dados Dinâmicas

Pilhas • Uma pilha é uma estrutura de dados que pode ser acedida somente por uma das suas extremidades, tanto para armazenar como para recuperar dados. • Por esta razão, uma pilha é chamada de estrutura LIFO (last in/first out).


Estruturas de Dados Dinâmicas Operações com pilhas: • clear() – limpa a pilha; • isEmpty() – verifica se a pilha está vazia; • push(elem) – coloca o elemento no topo da pilha; • pop() – toma o elemento mais alto da pilha; • topEl() – retorna o elemento mais alto da pilha sem removê-lo.


Estruturas de Dados Din창micas

push 10

push 5

pop

push 15

push 7

pop

7 5 10

10

10

15

15

10

10


Estruturas de Dados Dinâmicas • Uma aplicação de pilhas é o casamento de delimitadores num programa. • O casamento de delimitadores é parte importante de qualquer compilador. while (m < (n[8] + o)) { p = 7; /* inicializa p */ r = 6; }


Lê o caracter ch do arquivo file; while não é o fim de file if ch é ´(´,´[´ ou ´{´ push(ch); else if ch é ´)´,´]´ ou ´}´ if ch e o caracter extraído não se casam falha; else if ch é ´/´ lê o próximo caracter; if este caracter é ´*´ pule todos os caracteres até encontrar o final do contrário “*”; indique um erro se o final for encontrado antes do “*”; // else ignore os outros caracteres; lê o próximo caracter ch a partir de file; if a pilha está vazia sucesso; else falha; };


Estruturas de Dados Dinâmicas

Filas: • Uma fila é uma linha de espera que cresce somando elementos ao seu final e diminui ao retirar elementos da sua frente. • Numa extremidade os nós são somente adicionados, e na outra os nós são só removidos.


Estruturas de Dados Dinâmicas • Operações • clear() – limpa a fila; • isEmpty() – verifica se a fila está vazia; • isFull() – verifica se a fila está cheia; • enqueue(elem) – retira o elemento do final da fila; • dequeue() – retira o primeiro elemento da fila; • firstEl() – retorna o primeiro elemento da fila sem removê-lo.


Estruturas de Dados Din창micas

Enqueue 10 enqueue 5

dequeue

enqueue 15 enqueue 7 dequeue

7 5 10

10

5

15

15

5

5


Estruturas de Dados Dinâmicas • As filas são frequentemente usadas em simulações, uma vez que existe uma teoria das filas bem desenvolvida e matematicamente sofisticada na qual vários cenários são analisados e modelos, que usam filas, são construídos. Exemplos: clientes em filas de espera, peças em filas de montagem, sistemas de trânsito de grandes cidades, etc.


Estruturas de Dados Dinâmicas Estudo de Caso • Uma Biblioteca: incluir novos livros, registrar saída de livros pelas pessoas e retorná-los. • Neste estudo de caso quase tudo é implementado em termos de listas. • Ainda mais, ele usa listas de listas que também contêm referências cruzadas.


catรกlogo A B F

Fielding

Pasquin

The Hist.. NULL NULL

Fitzgerald

Select

Euph..

NULL NULL

NULL

pessoas A B C

Charles NULL

NULL


Estruturas de Dados Dinâmicas

Estudo de Caso • O problema usa um vetor catalogo de todos os autores de livros incluídos na biblioteca e um vetor pessoas de todas as pessoas que usaram a biblioteca pelo menos uma vez. • Os vetores são indexados por letras de modo que uma posição refere-se a lista de nomes com a letra correspondente. • Pode-se ter diversos livros de um mesmo autor, e por isso um dos membros do nó autor aponta para uma lista de livros escritos.


Estruturas de Dados Dinâmicas

Estudo de Caso • Da mesma forma, uma pessoa pode retirar diversos livros, e assim o nó desta pessoa possui um membro que aponta para a lista de livros retirados. • Este fato também é indicado ajustando-se o membro do nó livro para o nó da pessoa que o retirou. • O problema possui 4 classes: Autor, Livro, Pessoa e LivroRetirado.


Estruturas de Dados Dinâmicas

Estudo de Caso • 5 operações possíveis no Estudo de Caso: • • • • •

Incluir um livro; Registrar a saída de um livro; Retornar um livro; Mostrar uma listagem dos livros da biblioteca; Sair do programa.


cee.uma.pt/edu/eda/eda_200506


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.