Académique Documents
Professionnel Documents
Culture Documents
1. Implemente uma fila, utilizando encadeamento (indireção) nos nós. Segue esboço da
implementação:
class noh {
friend class fila;
private:
Dado dado;
noh* proximo;
public:
noh(Dado d = 0);
};
class fila {
private:
noh* inicio;
noh* fim;
int tamanho;
public:
fila();
void enfileira(Dado valor);
Dado desenfileira();
Dado espia();
};
2. Implemente uma pilha, utilizando encadeamento (indireção) nos nós. Segue esboço da
implementação:
class noh {
friend class pilha;
private:
Dado dado;
noh* proximo;
public:
noh(Dado d = 0);
};
class pilha {
private:
noh* topo;
int tamanho;
public:
pilha();
void empilha(Dado valor);
Dado desempilha();
Dado espia();
}
3. Escreva um algoritmo para determinar se uma string de caracteres de entrada é da forma
xCy, onde x é uma string consistindo das letras A e B e y é o inverso de x (use uma pilha para
resolver o problema).
6. Mostre como uma pilha pode ser implementada utilizando duas filas. Analise o tempo das
operações de empilhar (PUSH) e desempilhar (POP).
7. Um deque é um conjunto de itens a partir do qual podem ser eliminados e inseridos itens
em ambas as extremidades. Chame as duas extremidades de um deque esq e dir. Escreva
quatro funções em C++, RemDir, RemEsq, InsDir, InsEsq, para remover e inserir elementos
nas extremidades esquerda e direita de um deque. Certifique-se de que as funções funcionem
corretamente para o deque vazio e detectem o estouro e o underflow (tentativa de remoção
quando a fila está vazia). Segue esboço da implementação:
// deque
class deque {
private:
noh* esquerda;
noh* direita;
int tamanho;
public:
deque();
~deque();
void insereNaEsquerda(Dado dado);
void insereNaDireita(Dado dado);
Dado retiraEsquerda();
Dado retiraDireita();
Dado espiaEsquerda();
Dado espiaDireita();
void imprime();
inline bool vazia();
};
8. Implemente uma fila circular, utilizando armazenamento dos dados em arranjos. Segue
esboço da implementação:
typedef int Dado; // para facilitar a troca de int para outro tipo
typedef int Dado; // para facilitar a troca de int para outro tipo
11. Faça um programa que inverta o conteúdo de uma fila usando apenas as funções de
acesso.
12. Faça uma função que receba três filas, duas já preenchidas em ordem crescente e
preencha a última com os valores das duas primeiras em ordem crescente.
13. Faça uma função que receba duas pilha e verifique se elas são iguais, retornando
verdadeiro ou falso.
14. Implemente uma fila de prioridade usando por base uma fila encadeada. Nesse caso, cada
nó da fila terá, além dos dados, um atributo que indica a prioridade do nó. Considere que
quanto maior esse valor, maior será sua prioridade.