Buscar

03.Pilhas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Aula 03
Pilhas
Rodolfo Carneiro Cavalcante
Universidade Federal de Alagoas – UFAL
Campus Arapiraca
19 de Abril de 2015
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 1 / 50
Suma´rio
1 Introduc¸a˜o
2 Implementac¸a˜o com Arranjos
3 Implementac¸a˜o com Estruturas Auto-Referenciadas
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 2 / 50
Introduc¸a˜o
Suma´rio
1 Introduc¸a˜o
2 Implementac¸a˜o com Arranjos
3 Implementac¸a˜o com Estruturas Auto-Referenciadas
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 3 / 50
Introduc¸a˜o
Estruturas de Dados Ba´sicas
Conjuntos sa˜o fundamentais para a computac¸a˜o assim como o sa˜o
para a matema´tica
Conjuntos manipulados por algoritmos podem crescer, encolher e
sofrer outras mudanc¸as
Algoritmos exigem va´rios tipos diferentes de operac¸o˜es sobre
conjuntos
Estruturas de dados descrevem conjuntos de dados relacionados entre
si
O estudo de estruturas de dados e´ parte fundamental para o
desenvolvimento de algoritmos
Programas sa˜o compostos por algoritmos e estruturas de dados
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 4 / 50
Introduc¸a˜o
Estruturas de Dados Ba´sicas
As operac¸o˜es sobre conjuntos dinaˆmicos podem ser agrupadas em
duas categorias
consultas – retornam informac¸o˜es sobre os conjuntos
modificac¸o˜es – alteram o conjunto
Operac¸o˜es t´ıpicas
BUSCA(k) – busca por um elemento com valor de chave k e retorna
uma posic¸a˜o ou um ponteiro para o elemento
INSERE (x) – insere o elemento x no conjunto
REMOVE (x) – remove o elemento x do conjunto
MINIMO() – retorna o elemento do conjunto com a menor chave
MAXIMO() – retorna o elemento do conjunto com a maior chave
VAZIO() – verifica se o conjunto esta´ vazio
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 5 / 50
Introduc¸a˜o
Estruturas de Dados Ba´sicas
A escolha de uma estrutura afeta:
quantidade memo´ria para armazenamento
tempo de processamento
Conhecer va´rias estruturas e´ importante
conhecer vantagens e aplicabilidade de cada estrutura
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 6 / 50
Introduc¸a˜o
Estruturas de Dados Ba´sicas
Nesta disciplina sera˜o vistas va´rias estruturas de dados
Vetores
Pilhas
Filas
Listas
A´rvores
Grafos
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 7 / 50
Introduc¸a˜o
Estruturas de Dados Ba´sicas
Vetores
ja´ bem conhecidos
tipo de dados composto homogeˆneo
armazena uma sequeˆncia de objetos de mesmo tipo em posic¸o˜es
consecutivas de memo´ria
estrutura de dados linear e esta´tica
tempo de acesso para ra´pido e constante (acessado pelo ı´ndice do
vetor)
estrutura indicada quando o tamanho e´ sabido de antema˜o e na˜o
mudara´ com frequeˆncia
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 8 / 50
Introduc¸a˜o
Pilhas
Algumas aplicac¸o˜es requerem inserc¸o˜es, retiradas e acessos em apenas
um dos extremos de uma lista
Exemplos:
implementac¸a˜o de recursividade pelo SO
mecanismo de fazer/desfazer de editores de texto
Navegac¸a˜o de pa´ginas Web
Pilhas (stack) sa˜o estruturas de dados LIFO
last-in, first-out
ultimo elemento a entrar e´ o primeiro a sair
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 9 / 50
Introduc¸a˜o
Pilhas
Analogia: pilha de pratos
inserc¸a˜o ou remoc¸a˜o de pratos na pilha e´ mais conveniente na parte
superior
o prato mais recentemente inserido sempre fica no topo, acima dos
demais
o primeiro a entrar e´ o u´ltimo a ser lavado
Existe uma ordem linear para pilhas, que e´ a ordem do “mais recente
para o menos recente”
Essa propriedade torna a pilha uma ferramenta ideal para
processamento de estruturas aninhadas
subestruturas mais internas devem ser processadas antes da estrutura
que as contenham
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 10 / 50
Introduc¸a˜o
Pilhas
Principais operac¸o˜es do TAD pilha:
1 Criar uma pilha vazia
2 Verificar se a pilha esta´ vazia
3 Empilhar o item x no topo da pilha
4 Desempilhar o item x que esta´ no topo da pilha
5 Verificar o tamanho atual da pilha
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 11 / 50
Introduc¸a˜o
Pilhas
Existem va´rias opc¸o˜es de estruturas de dados que podem ser usadas
para implementar pilha
As mais utilizadas sa˜o:
implementac¸a˜o por meio de arranjos (vetor)
implementac¸a˜o por meio de estruturas auto-referenciadas
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 12 / 50
Implementac¸a˜o com Arranjos
Suma´rio
1 Introduc¸a˜o
2 Implementac¸a˜o com Arranjos
3 Implementac¸a˜o com Estruturas Auto-Referenciadas
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 13 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Utilizac¸a˜o de um vetor para armazenar itens
Itens sa˜o armazenados em posic¸o˜es consecutivas de memo´ria
Inserc¸o˜es e retiradas acontecem na u´ltima posic¸a˜o do vetor (topo da
pilha)
Vetor deve ter tamanho suficiente para armazenar itens da pilha
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 14 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Implementac¸a˜o da estrutura de dados Pilha (arranjo)
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 15 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 1: Estrutura de dados Pilha (arranjo)
template <class T> class Pilha{
private:
T *itens;
int topo, maxTam;
public:
Pilha(int maxTam);
bool vazia();
void imprime();
void empilha(T item);
T desempilha();
int tamanho();
};
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 16 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
a estrutura que guarda a pilha e´ um vetor
T* itens;
o ı´ndice topo indica o topo atual da pilha
o tamanho ma´ximo da pilha (maxTam) e´ usado para indicar o limite
do vetor
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 17 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Implementac¸a˜o da estrutura de dados Pilha (arranjo)
Func¸a˜o para criar a pilha
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 18 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 2: Estrutura de dados Pilha: criar pilha vazia
template <class T> Pilha<T>::Pilha(int maxTam){
this->topo=0;
this->maxTam = maxTam;
this->itens = new T[this->maxTam];
};
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 19 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
O construtor da classe Pilha faz as devidas inicializac¸o˜es
o topo da pilha sera´ a posic¸a˜o 0
o tamanho ma´ximo sera´ passado como paraˆmetro para o construtor
o vetor itens e´ inicializado dinamicamente
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 20 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 3: Estrutura de dados pilha: verificar se esta´ vazia
template <class T> bool Pilha<T>::vazia(){
return this->topo==0;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 21 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Implementac¸a˜o da estrutura de dados Pilha (arranjo)
Func¸a˜o para inserir item no topo da pilha
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 22 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 4: Estrutura de dados pilha: empilhar item no topo da pilha
empilha(T item){
se (topo == tamanho maximo)
“pilha cheia!”
senao{itens[topo] = item;
topo++;
}
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 23 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Implementac¸a˜o da estrutura de dados Pilha (arranjo)
Func¸a˜o para retirar item do topo da pilha
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 24 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 5: Estrutura de dados pilha: desempilhar item no topo da pilha
desempilha(){
se(nao vazia){
topo−−;
item = itens[topo];
retorne item;
}
senao{
“pilha vazia!”;
}
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 25 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 6: Estrutura de dados Pilha: verificar o tamanho atual da pilha
tamanho(){
retorne topo;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 26 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Exemplo de aplicac¸a˜o: pareˆntesis e colchetes
E´ preciso decidir se uma sequeˆncia de pareˆnteses e colchetes esta´
bem-formada
Ou seja, pareˆntesis e colchetes sa˜o fechados na ordem inversa em que
sa˜o abertos
sequeˆncia bem-formada: ( ( [ [ ( ) ] ] ) )
sequeˆncia mal-formada: ( ( [ ) ] )
Como implementar esse algoritmo?
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 27 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Exemplo de aplicac¸a˜o: pareˆntesis e colchetes
Observac¸o˜es:
1 se o nu´mero de itens for ı´mpar → na˜o esta´ bem-formado
2 os primeiros itens da sequeˆncia sera˜o avaliados por ultimo
3 os itens mais internos e seus correspondentes sera˜o avaliados primeiro
Que estrutura utilizar?
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 28 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Exemplo de aplicac¸a˜o: pareˆntesis e colchetes
Soluc¸a˜o:
Sempre que encontrar um pareˆntese ou colchete abrindo, empilhe-o
Quando encontrar pareˆntese ou colchete fechando, desempilhe o
s´ımbolo do topo da pilha
Compare se eles sa˜o equivalentes
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 29 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Algoritmo 7: Expressa˜o bem formada com pilha
bool bem formada(char seq[], int tam){
Pilha<char>pilha(tam);
if(tam%2!=0)
return false;
else{
for(int i = 0; i<tam; i++){
if(seq[i]==’(’ || seq[i]==’[’)
pilha.empilha(seq[i]);
else{
char simbolo = pilha.desempilha();
if(seq[i]==’)’ && simbolo == ’[’)
return false;
if(seq[i]==’]’ && simbolo == ’(’)
return false;
}
}
return true;
}
}Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 30 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Considerac¸o˜es sobre implementac¸a˜o de pilhas com arranjos
Economia de memo´ria – apontadores sa˜o impl´ıcitos e na˜o precisam
ser armazenados na memo´ria
Problema: tamanho da pilha e´ fixo
aplicac¸o˜es que na˜o possuem previsa˜o sobre crescimento da pilha
requerem realocac¸a˜o de memo´ria
operac¸a˜o de alto custo de tempo e memo´ria
criar nova a´rea com mais posic¸o˜es e copiar todos os itens para esta a´rea
O que fazer quando o crescimento da pilha e´ dinaˆmico e na˜o previsto?
e agora, Jose´?
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 31 / 50
Implementac¸a˜o com Arranjos
Implementac¸a˜o com Arranjos
Considerac¸o˜es sobre implementac¸a˜o de pilhas com arranjos
Economia de memo´ria – apontadores sa˜o impl´ıcitos e na˜o precisam
ser armazenados na memo´ria
Problema: tamanho da pilha e´ fixo
aplicac¸o˜es que na˜o possuem previsa˜o sobre crescimento da pilha
requerem realocac¸a˜o de memo´ria
operac¸a˜o de alto custo de tempo e memo´ria
criar nova a´rea com mais posic¸o˜es e copiar todos os itens para esta a´rea
O que fazer quando o crescimento da pilha e´ dinaˆmico e na˜o previsto?
e agora, Jose´?
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 31 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Suma´rio
1 Introduc¸a˜o
2 Implementac¸a˜o com Arranjos
3 Implementac¸a˜o com Estruturas Auto-Referenciadas
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 32 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Pilha e´ organizada em ce´lulas
Cada ce´lula guarda um item de dado e uma refereˆncia para a pro´xima
ce´lula
Permite utilizar posic¸o˜es na˜o cont´ıguas de memo´ria
Na˜o e´ necessa´rio definir a priori o tamanho ma´ximo da pilha
A pilha guarda uma refereˆncia para a ce´lula no topo
As demais ce´lulas apontam para a pro´xima ce´lula
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 33 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 34 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Para desempilhar um item (topo)
desliga-se a ce´lula xn
faz a ce´lula xn−1 ser o topo da pilha
Para inserir um item
cria-se uma nova ce´lula para o item
faz a pilha apontar para a nova ce´lula como sendo o topo
faz essa nova ce´lula apontar para o topo anterior como pro´ximo item
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 35 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Cada ce´lula da pilha conte´m um item da pilha e uma refereˆncia para
a pro´xima ce´lula
Algoritmo 8: Estrutura de dados Pilha: ce´lula
template <class T> class Celula{
public:
T item;
Celula* prox;
Celula(){
prox = NULL;
}
};
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 36 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o de uma ce´lula
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 37 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Cada ce´lula da pilha conte´m um item da pilha e uma refereˆncia para
a pro´xima ce´lula
Algoritmo 9: Estrutura de dados Pilha: ce´lula
template <class T> class Celula{
public:
T item;
Celula* prox;
Celula(){
prox = NULL;
}
};
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 38 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
A classe Celula possui um campo item para guardar o item a ser
armazenado na pilha
Possui um ponteiro prox que aponta para a pro´xima ce´lula da pilha
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 39 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 10: Estrutura de dados Pilha
template <class T> class Pilha{
private:
Celula<T> *topo;
int tam;
public:
Pilha();
bool vazia();
void imprime();
void empilha(T item);
T desempilha();
int tamanho();
};
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 40 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
A pilha guarda apenas um ponteiro para a ce´lula no topo
A varia´vel tam e´ utilizada para se guardar o tamanho atual da pilha,
sem precisar percorreˆ-la
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 41 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o do construtor
Rodolfo Carneiro Cavalcante(UFAL) Aula 03Pilhas 19 de Abril de 2015 42 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 11: Estrutura de dados Pilha: Construtor
template <class T> Pilha<T>::Pilha(){
this->topo = NULL;
this->tam = 0;
}
template <class T> bool Pilha<T>::vazia(){
return this->topo==NULL;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 43 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o da func¸a˜o de empilhar
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 44 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 12: Estrutura de dados Pilha: Empilhar
empilha(item){
Celula *aux = topo;
topo = new Celula();
topo->item = item;
topo->prox = aux;
tam++;
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 45 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o da func¸a˜o de desempilhar
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 46 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Algoritmo 13: Estrutura de dados Pilha: Desempilhar
desempilha(){
se(nao vazia){
item = topo->item;
topo = topo->prox;
tam−−;
retorne item;
}
else{
”pilha vazia!”;
}
}
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 47 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Implementac¸a˜o com Estruturas Auto-Referenciadas
Considerac¸o˜es sobre estruturas auto-referenciadas
Implementac¸a˜o u´til em aplicac¸o˜es em que na˜o existe previsa˜o sobre o
crescimento da pilha
Desvantagem – utilizac¸a˜o de memo´ria extra para armazenar as
refereˆncias (os ponteiros prox)
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 48 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Exerc´ıcio
Reconhecedor para linguagem L = {ambncndm|m ≥ 1, n ≥ 0}
L = {ad , abcd , aabcdd , aaaadddd , abbbcccd , ...}
Func¸a˜o deve receber uma cadeia e retornar true ou false se a cadeia
pertence a linguagem
Dado que essa linguagem e´ infinita, utilize uma pilha encadeada para
resolver o problema
voceˆ na˜o sabe de antema˜o o tamanho da pilha
Entrega na pro´xima sexta-feira (24/04) a`s 23:55
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 49 / 50
Implementac¸a˜o com Estruturas Auto-Referenciadas
Exerc´ıcio
Formato da entrega
Ambiente Virtual de Aprendizagem
Envie os arquivos fontes (mesmo que apenas um) compactados com
rar ou zip, com o nome LP3 2014.1 nome aluno1 e nome aluno2.zip
Exemplo: alunos Wilcklison Jonesclayson e Joilson dos Teclados
Arquivo zip: LP3 2014.1 Wilcklison e Joilson.zip
O seu programa deve ser executado em uma ma´quina com Ubuntu
com compilador gcc(g++)
Se o arquivo na˜o esta´ compilando/executando, envie assim mesmo e
informe no corpo do email o problema e onde suspeita estar
localizado o problema no co´digo.
Rodolfo Carneiro Cavalcante (UFAL) Aula 03Pilhas 19 de Abril de 2015 50 / 50
	Introdução
	Implementação com Arranjos
	Implementação com Estruturas Auto-Referenciadas

Continue navegando