Beruflich Dokumente
Kultur Dokumente
Objetivos
Explorar os conceitos fundamentais acerca do uso
de pilhas utilizando a linguagem C
Organizao e implementao, caractersticas,
vantagens, desvantagens, regras de utilizao,
operaes bsicas e algoritmos de implementao
Motivao
Uma das estruturas de dados mais simples a pilha
Possivelmente, por esta razo, a pilha uma das
estrutura de dados mais utilizada em programao
Motivao
A idia fundamental da pilha que todo o acesso a
seus elementos feito atravs do seu topo
Seja na insero ou na remoo de elementos
Assim, quando um novo elemento introduzido na
pilha, passa a ser o elemento do topo - e o nico
elemento que pode ser removido da pilha o topo
Estratgia
Podemos fazer uma analogia com uma pilha de
pratos em um restaurante
Se quisermos adicionar um prato na pilha, o colocamos
no topo da pilha de pratos
Para pegar um prato da pilha, retiramos o do topo
Propriedades
Propriedades de uma pilha:
Tipos de pilhas
Neste estgio, estaremos trabalhando com dois
tipos de pilhas: seqenciais e encadeadas
Seqencial: neste TAD, os elementos desta pilha so
armazenados em endereos seqenciais. Materializada
na forma de um vetor (arranjo ou matriz).
v[ ]
12
09
...
2
...
MAX-1
Topo
12
09
7
Pilhas seqenciais
Pense um pouco...
O que voc acha que seria necessrio para
implementar uma biblioteca de um novo TAD que
representasse uma pilha seqencial?
um vetor de elementos (tamanho pr-definido)
uma varivel que controle o topo da pilha
preciso
preciso deslocar
deslocar
os
os elementos
elementos aa cada
cada
insero
insero ou
ou remoo
remoo
da
da pilha?
pilha? Porqu?
Porqu?
Pilha Vazia
...
Topo = -1
Insere A
...
Topo = 0
Como
Como poderamos
poderamos
adaptar
adaptar uma
uma lista
lista
seqencial
seqencial aa uma
uma
pilha?
pilha?
Insere B
...
Topo = 1
Retira B
...
Topo = 0
Pilhas encadeadas
O que fazer quando o nmero mximo de elementos
na pilha no conhecido?
Devemos implementar a pilha usando uma estrutura
de dados dinmica (com alocao dinmica)
dinmica
Podemos empregar os conceitos vistos nas listas
simplesmente encadeadas
11
Pilhas encadeadas
Pense mais um pouco...
O que voc acha que seria necessrio para
implementar uma biblioteca de um novo TAD que
representasse uma pilha encadeada?
uma struct representando um n da pilha (dado e
ponteiro para o prximo n da pilha).
um ponteiro para o 1 n representando a pilha
Como
Como poderamos
poderamos
adaptar
adaptar uma
uma lista
lista
encadeada
encadeada aa uma
uma pilha?
pilha?
Onde
Onde ser
ser oo topo
topo da
da
pilha:
pilha: no
no incio
incio ou
ou no
no
final
final da
da lista?
lista?
P
12
09
topo da pilha?
12
13
Algoritmos em C
O que dever ser feito pelo aluno:
Escolha e instalao do ambiente a ser trabalhado no
laboratrio
Modelagem deste TAD (dados e operaes)
Implementao dos algoritmos de operaes bsicas
vistos em sala de aula na linguagem C
Utilizao das regras de modelagem vistas no mdulo
anterior (criao de bibliotecas) e modularizao
Implantao de cdigo legvel e bem documentado
Nomes de variveis condizentes com o problema
Prtica de laboratrio
15