Buscar

Atividade Estruturada - Estrutura de Dados

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 5 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

Prévia do material em texto

ESTRUTURA DE DADOS - CCT0021
Título
PRÁTICA CONTEXTUALIZADA ATRAVÉS DE EXERCÍCIOS
Objetivo
Pesquisar no material indicado e no conteúdo de aula e responder o questionário 
proposto.
Competências / Habilidades
1) Escrever funções com vetores; Definir, identificar aplicações e representar 
listas lineares sequenciais; Compreender e implementar as operações básicas com 
listas lineares sequenciais não ordenadas; Compreender e implementar o método 
de pesquisa ou busca sequencial
2) Conceituar a estrutura de dados pilha; Representar a estrutura de dados pilha 
por contiguidade; Compreender, implementar e desenvolver práticas com pilhas
3) Conceituar a estrutura de dados fila; Representar a estrutura de dados fila por 
contiguidade (fila simples); Compreender, implementar e desenvolver tarefas 
práticas com fila simples
4) Conceituar, representar e realizar aplicações com listas circulares simplesmente 
e duplamente encadeadas
Desenvolvimento
1) LISTAS LINEARES SEQUENCIAIS
1.1) Considere o programa abaixo e depois dê o que se pede:
#include <iostream>
#include <cstdlib>
using namespace std;
void Teste1(int );
void Teste2(int &);
int Teste3(int);
int x = 20;
int main()
{
 int numero = 10, outroNumero;
 Teste1(numero);
 cout << "Valor de numero (após Teste1) = " << numero << endl; 
 cout << "X = " << x << endl; 
 
 Teste2(numero);
 cout << "Valor de numero (após Teste2) = " << numero << endl; 
 cout << "X = " << x << endl; 
 outroNumero = Teste3(numero);
 cout << "Valor de outro numero (após Teste3) = " << outroNumero 
 << endl; 
 cout << "X = " << x << endl;
 
 system("pause");
 
}
void Teste1(int numero)
{
 numero = numero +x ;
 x++;
}
void Teste2(int &numero)
{
 int valor = 100;
 
 numero = numero + valor;
 x++;
}
int Teste3(int n)
{
 int valor = 200;
 n = n + valor;
 x--;
 return n;
} 
Pede-se:
a) Identifique as variáveis globais e locais. Quando identificar uma variável local, 
especifique o escopo da mesma.
b) Identifique, em cada função, o tipo de passagem de parâmetros.
c) Mostre, passo a passo, o valor de todas as variáveis, indicando o momento em que as 
variáveis não mais ocupam espaço na memória.
d) Diga o que é impresso na tela.
2) PILHA
2.1) Faça um programa em C++ para ler um número inteiro maior que zero, converter 
este número de decimal para binário, usando pilha e apresentar na tela, o resultado da 
conversão.
2.2) Construa um programa em C++, que use a estrutura pilha e verifique se o número de 
abre parênteses é igual ao número de fecha parênteses.
2.3) Uma palavra é um palíndromo se a sequência de letras que a forma é a mesma, quer 
seja lida da esquerda para a direita ou da direita para a esquerda (exemplo: raiar, ovo, 
ana, mussum).
2.4) Escreva um programa em C++ que reconheça se uma dada palavra é um palíndromo.
2.5) Escreva um programa em C++ que calcule o valor de uma expressão em notação 
polonesa reversa (notação pós-fixa). Considere as 4 operações e que se está trabalhando 
apenas com dígitos (valores de 0 a 9).
Obs.: Na notação polonesa reversa o operador é posto após os operandos. Assim sendo, 
não é mais necessária a utilização de parênteses, já que não há ambiguidade, como na 
notação infixa.
Ex: Notação infixa : (2 + 3)* 5 Notação Polonesa Reversa: 23+5*
Notação infixa : 2 + 3*5 Notação Polonesa Reversa: 235*+
3) FILAS SEQUENCIAIS SIMPLES E CIRCULAR
3.1) Faça um programa em C++ para apresentar um menu várias vezes, com as 
seguintes opções :
MENU
1- Enfileirar um número inteiro positivo.
2- Desenfileirar tudo e imprimir apenas os valores que são múltiplos de 5.
3- Terminar o programa
Implemente, adequadamente, cada opção fornecida.
3.2) Faça um programa em C++ para ler uma sequência de caracteres (vetor de char) 
e enfileirá-los. Em seguida, desenfileire todos os caracteres e empilhe-os em uma pilha 
P seguindo as orientações:
Converta as letras para maiúsculas antes de empilhá-las
Qualquer outro caracter, empilhe sem alteração.
Ao final, desempilhe tudo, exibindo o resultado na saída padrão.
3.3) Faça um programa em C++ para apresentar um menu várias vezes, com as 
seguintes opções :
MENU
1- Enfileirar um valor inteiro não nulo
2- Desenfileirar um valor, exibindo na tela o seu dobro
3- Desenfileirar tudo, exibindo os valores desenfileirados sem alterações
4- Terminar o programa
Implemente, adequadamente, cada opção fornecida usando funções para enfileirar e 
desenfileirar.
3.4) Faça um programa que leia um vetor de char e enfileire seus dados em duas filas : 
fila A
(fila simples ? de char ) e fila B (fila circular com contador ? de inteiros) da seguinte 
forma:
Se o caracter for dígito, converta-o para dígito e enfileire-o em B.
Se o caracter for letra, enfileire-o em A.
Qualquer outro caracter não deverá ser enfileirado.
Ao final, desenfileire as filas B e A, nesta ordem, exibindo os seus dados.
4) LISTAS CIRCULARES SIMPLESMENTE E DUPLAMENTE ENCADEADAS
4.1) Faça um programa (aplicação) em C++ para ler a quantidade n de nós de uma lista 
circular simplesmente encadeada de inteiros, sendo n = 0. A lista deverá ser construída 
com n nós, através de sucessivas inserções no final. Após sua criação, a lista deverá 
ser impressa, se possível. Emita mensagem de erro em caso de lista vazia.
Nesta questão, implemente 2 funções/operações :
a) no *insereFim(no *p, int valor);
p aponta para o primeiro nó da lista e valor é o elemento a ser inserido no final da lista.
b) void imprime(no *p);
4.2) Considerando o programa do item 2) acima, em que o ponteiro externo aponta para 
o primeiro nó da lista (nó mais à esquerda), implemente as seguintes operações 
(funções) com a lista criada :
a) Remova o primeiro nó da lista, imprimindo-a ao final.
b) Remova o último nó da lista, imprimindo-a ao final.
c) Conte o número de nós da lista
d) Procure na lista um valor passado, realizando uma busca ou pesquisa seqüencial. A
função deverá retornar NULL ou o endereço do nó com o valor encontrado.
4.3) Considere uma lista duplamente encadeada apontada por um ponteiro x e ainda, um 
nó fora da lista, apontado por um ponteiro p.
Sabendo que x aponta para qualquer nó da lista, faça o que se pede :
a) Diga o que faz a função Eureka
b) Dê um exemplo para cada caso, usando ilustrações gráficas.
// Seja o tipo
struct nodupla {
struct nodupla *elink;
int dado;
struct nodupla *dlink;
};
// Código da função
void Eureka(nodupla *p, nodupla *x)
{
if (x dlink != NULL)
x dlink elink = p;
p dlink = x dlink;
p elink = x;
x dlink;
}
4.4) Faça um programa (aplicação) em C++ para ler a quantidade n de nós de uma 
lista duplamente encadeada de reais, sendo n = 0. A lista deverá ser construída com n 
nós, através de sucessivas inserções no início. Após sua criação, a lista deverá ser 
impressa, se possível. Emita mensagem de erro em caso de lista vazia.
Defina o tipo nodupla para reais.
Nesta questão, implemente 2 funções (operações) :
a) nodupla *insereFrente(nodupla *p, int valor);
p aponta para o primeiro nó da lista e valor é o elemento a ser
inserido no início da lista.
b) nodupla imprime(nodupla *p);
onde p aponta para o 1º. nó da lista (i.e., nó mais à esquerda na lista).
A lista deverá ser impressa da esquerda para a direita.
4.5) Considerando o programa do item 2) acima, em que o ponteiro externo aponta para 
o primeiro nó da lista, implemente as seguintes operações (funções) com a lista criada :
a) Remova o primeiro nó da lista, imprimindo-a ao final.
b) Remova o último nó da lista, imprimindo-a ao final.
c) Conte o número de nós da lista, considerando o protótipo :
int contaNos (nodupla *);
sendo que a função contaNos deverá receber o ponteiro para o início da lista (nó mais à
esquerda).
d) Substitua um valor passado como parâmetro,por um novo valor também passado 
como
parâmetro. Note que, esta operação só será possível se a lista não estiver vazia.

Continue navegando

Outros materiais