Professional Documents
Culture Documents
Estruturas de Dados
Estruturas de Dados bsicas
utilizando Vetores
- Introduo
- Pilhas usando Vetores
- Filas usando Vetores
Pilhas
24
89
12
4
55
20
24
89
12
4
55
20
Vetores possuem um
Pilha
espao
cheia
limitado para armazenar
dados;
necessitamos definir um
espao grande o
suficiente para a nossa
Pilha pilha;
vazia necessitamos de um
-1
4
3
2
1
0
5
indicador de qual
elemento do vetor o
atual topo da pilha.
Procedimento Didtico:
Reviso/introduo de Programao Estruturada;
modelagem da Pilha e de seus algoritmos usando
esta tcnica.
Programao Estruturada
Baseada na expresso de algoritmos nica e
exclusivamente atravs de 4 grupos de
estruturas de controle:
bloco: comando ou conjunto de comandos sempre
executados em seqncia.
Ex.: (Pascal): begin end;
estrutura condicional: SE-ENTO-SENO
Ex.: (Pascal): if (cond) then bloco1 else bloco2;
estrutura de repetio: ENQUANTO COND FAA
BLOCO
Ex.: (Pascal): while (cond) do bloco;
estrutura de abstrao: procedimento ou funo.
Agrupamento de comandos com um nome e
eventualmente tambm parmetros nomeados.
Programao Estruturada
Para ns parece um retrocesso.
Na poca:
fazia-se programas completamente ininteligveis;
foi um grande avano no sentido de:
produzir cdigo mais fcil de se manter e entender;
produzir cdigo com mais qualidade.
Programao Estruturada
No existem objetos:
dados e seu comportamento so considerados em separado;
unificar uma estrutura de dados com as operaes definidas
sobre a mesma funo do programador.
Programao Estruturada
Modelamos as estruturas de dados propriamente
ditas como um tipo estruturado:
estrutura uma coleo de variveis referenciada por um
mesmo nome;
imagine um objeto sem mtodos;
chamamos a cada elemento desta coleo de campo.
Algoritmicamente:
tipo Empregado {
Campos
caracter nome[100];
caracter cargo[20];
caracter endereo[200];
inteiro salrio;
};
Varivel global
Variveis
Empregado chefe;
Programao Estruturada
Modelamos as operaes sobre uma estrutura de dados como
procedimentos ou funes:
variveis globais valem dentro de qualquer funo ( escopo global).
Antes de vermos alocao dinmica de memria e ponteiros vamos
trabalhar com funes sem alguns parmetros.
Algoritmicamente:
Variveis
Empregado chefe;
Procedimento baixaSalrio (inteiro porcentagem)
variveis
real auxiliar;
incio
auxiliar <- chefe.salrio * (porcentagem / 100);
chefe.salrio <- chefe.salrio - auxiliar;
fim;
Modelagem da Pilha
Aspecto Estrutural:
necessitamos de um vetor para armazenar as informaes;
necessitamos de um indicador da posio atual do topo da
pilha;
necessitamos de uma constante que nos diga quando a pilha
est cheia e duas outras para codificar erros.
Pseudo-cdigo:
constantes MAXPILHA = 100;
tipo Pilha {
inteiro dados[MAXPILHA];
inteiro topo;
};
Modelagem da Pilha
Aspecto Funcional:
colocar e retirar dados da pilha;
testar se a pilha est vazia ou cheia;
C.
Inicializar ou limpar:
InicializaPilha
Algoritmo InicializaPilha
FUNO inicializaPilha()
incio
aPilha.topo <- -1;
fim;
Algoritmo PilhaCheia
Booleano FUNO pilhaCheia()
incio
SE (aPilha.topo = MAXPILHA - 1) ENTO
RETORNE(Verdadeiro)
SENO
RETORNE(Falso);
fim;
Algoritmo PilhaVazia
Booleano FUNO pilhaVazia()
incio
SE (aPilha.topo = -1) ENTO
RETORNE(Verdadeiro)
SENO
RETORNE(Falso);
fim;
Algoritmo Empilha
Constantes
ERROPILHACHEIA = -1;
ERROPILHAVAZIA = -2;
Inteiro FUNO empilha(inteiro dado)
incio
SE (pilhaCheia) ENTO
RETORNE(ERROPILHACHEIA);
SENO
aPilha.topo <- aPilha.topo + 1
aPilha.dados[aPilha.topo] <- dado;
RETORNE(aPilha.topo);
FIM SE
fim;
Algoritmo Desempilha
Inteiro FUNO desempilha()
incio
SE (pilhaVazia) ENTO
RETORNE(ERROPILHAVAZIA);
SENO
aPilha.topo <- aPilha.topo - 1;
RETORNE(aPilha.topo);
FIM SE
fim;
Algoritmo Topo
Inteiro FUNO topo()
incio
SE (pilhaVazia) ENTO
ESCREVA(ERRO: Pilha vazia ao
acessar!);
RETORNE(ERROPILHAVAZIA);
SENO
RETORNE(aPilha.dados[aPilha.topo]);
FIM SE
fim;
Fila
Filas
uma estrutura de dados importantssima para:
gerncia de dados/processos por ordem cronolgica:
Fila de impresso em uma impressora de rede;
Fila de pedidos de uma expedio ou tele-entrega.
Fila
Filas
uma estrutura de dados importantssima para:
gerncia de dados/processos por ordem cronolgica:
Fila de impresso em uma impressora de rede;
Fila de pedidos de uma expedio ou tele-entrega.
Fila
Filas
uma estrutura de dados importantssima para:
gerncia de dados/processos por ordem cronolgica:
Fila de impresso em uma impressora de rede;
Fila de pedidos de uma expedio ou tele-entrega.
Fila
Filas
uma estrutura de dados importantssima para:
gerncia de dados/processos por ordem cronolgica:
Fila de impresso em uma impressora de rede;
Fila de pedidos de uma expedio ou tele-entrega.
Fila
Filas
uma estrutura de dados importantssima para:
gerncia de dados/processos por ordem cronolgica:
Fila de impresso em uma impressora de rede;
Fila de pedidos de uma expedio ou tele-entrega.
Fila
Vetores possuem um
espao
24
limitado para armazenar
89
dados;
12
necessitamos definir um
espao grande o
4
Fila
suficiente para a nossa
55
vazia
fila;
20 -1
4
3
2
1
0
5
necessitamos de um
indicador de qual
Posio do elemento do vetor o
atual fim da fila (ltimo);
Incio da filaltimo
inclumos sempre no fim.
Algoritmo Retira
Procedimento:
24
89
24
12
89
12
4
55
4
20 5
55
4
20
testamos se h elementos;
decrementamos o fim da
fila (ltimo);
salvamos o primeiro
elemento em varivel
auxiliar;
empurramos tudo para a
frente.
Parmetros:
fila (global).
Posio do
Incio da filaltimo
Inicializar ou limpar:
InicializaFila