Você está na página 1de 11

2016-1 Estrutura de Dados Reviso p1

1. Defina o que aborda o conceito de estrutura de dados. Explique.


2. O que so estruturas de dados dinmicas? Explique.
3. Explique a diferena entre estrutura homognea e heterognea.
4. Explique a diferena de vetor, matriz e registro(struct). D exemplos
no C ++ .
5. Dizer que estamos trabalhando estrutura de dados com arranjos,
significa o que?
6. Explique o que seria uma estrutura ordenada ou desordenada.
7. Explique o mtodo de busca em uma estrutura desordenada. D
exemplo do cdigo.
8. Explique o mtodo de busca em uma estrutura ordenada. D exemplo
do cdigo.
9. Explique o mtodo de busca binria. D um exemplo de um cdigo
assim.
10.Defina Struct e d um exemplo em C++.
11.Defina LIFO e explique as suas funes(mtodos) e atributos
bsicos(topo).
a. Push
b. Pop
c. Exibir_pilha
d. Pilha_vazia
e. Pilha_cheia
f.

topo

12.Faa um programa em C ++ que leia 100 nmeros e construa uma


pilha apenas com nmeros pares.
13.Utilizando a estrutura de uma pilha leia uma palavra ou frase e a
exiba na ordem inversa.
14.Cite pelo menos trs atividades no computador que requeiram o uso
de pilhas.

Nota: Dever ser entregue de forma impressa e individual no dia da


prova juntamente com as outras listas de atividades. Utilizar livros de
Estrutura de dados, notas de aula, pesquisa Google e o site de
referencia WWW.cplusplus.com, cada questo dever ser respondida
com no mnimo 4 linhas + cdigo de exemplo quando for o caso.

1 - Estrutura de dados o ramo da computao que estuda os diversos


mecanismos de organizao de dados.
2 - So aqueles que so alterados medida que ocorre a sua manipulao
atravs de insero e remoo de elementos. A dimenso dum elemento
dinmico no tm limitaes, sendo a sua nica restrio a limitao fsica
memria do computador onde ocorre a execuo do algoritmo.
3 Estruturas homogneas so estruturas em que seus valores so do
mesmo tipo como, por exemplo, vetores e matrizes. Estruturas
heterogneas so estruturas que so constitudas por tipos diferentes como,
por exemplo, o struct.
4 Um vetor utilizado para armazenar um conjunto de dados de mesmo
tipo endereados por um nico ndice por ser unidimensional. Exemplo:
int vetor[10]; - esta a criao de um vetor com 10 elementos de mesmo
tipo inteiro.
Uma matriz utilizada para armazenar um conjunto de dados de mesmo
tipo endereados por mais de um ndice por ser multidimensional. Exemplo:
Int matriz[10][10] esta a criao de uma matriz com 100 elementos
(10x10) de mesmo tipo inteiro.
Um struct uma varivel especial que contm varias outras variveis
normalmente de tipos diferentes.
Struct funcionario{-esta a criao de um struct com 3 variaveis de tipos
diferentes
Int idade;

sendo assim uma estrutura heterognea.

String nome;
Float salario;
};

5 Arranjos (arrays em ingls) so nada mais nada menos do que os


vetores e matrizes, ento ao dizer que estamos trabalhando com arranjos,
estamos trabalhando com vetores e/ou matrizes.
6 Estrutura ordenada so estruturas que tem algum tipo de ordem, ao
inserir um elemento deve ser verificado qual o local deve ser colocado para
manter a ordem da estrutura.
Estrutura desordenada so estruturas sem qualquer tipo de ordem, os
elementos dessa estrutura so colocados na primeira posio vazia
encontrada.

7 A busca em uma estrutura desordenada deve ser sequencial, verificando


elemento por elemento j que no esto ordenadas o valor a ser buscado
pode estar em qualquer posio. Exemplo:
Int vetor[10];
Int i;
For(i=0;i<=10;i++){
If(vetor[i] == 10){
Cout << vetor encontrado na posio << i;
i = 10;
}
}

8 A busca em uma estrutura ordenada deve ser uma busca binria, pois se
estiver ordenado, por exemplo, em ordem crescente, ao verificar uma
posio em busca do numero 10, por exemplo, e for encontrado um numero
maior j se sabe que o numero sendo buscado estar localizado em alguma
das posies anteriores. Exemplo:
int y=0, e=0, d=9, m=0;
vetor e d a ultima.

-varivel e representa a primeira posio do

m = (e+d)/2;
cout << "Digite o valor que deseja buscar" << endl;
cin >> y;

do{
if(y > vetor[m]){
-se o valor a buscar for maior que o valor da
posio m, a comparao
e = m;
posies a frente.

recalcula o meio do vetor para buscar o valor em

m = (e+d)/2;
}else if(y < vetor[m]){ -se o valor a buscar for menor que o valor da
posio m, a

d = m;
posies anteriores.

comparao recalcula o meio para buscar em

m = (e+d)/2;
}
}while(y != vetor[m]);

-finaliza a busca ao encontrar o valor.

return m; - retorna a posio em que foi encontrado o valor.


}
9 A busca binria consiste em buscar o valor na posio central dos
elementos, se o numero da posio for maior que o numero que se deseja
buscar, a busca recalcula o meio considerando que esta posio j
verificada ser o ultimo elemento da estrutura. Se o numero for menor a
busca recalcula o meio considerando que esta posio j verificada ser o
primeiro elemento da estrutura, e a busca procede desta maneira ate ser
encontrado o valor. Exemplo:
int y=0, e=0, d=9, m=0;
vetor e d a ultima.

-varivel e representa a primeira posio do

m = (e+d)/2;
cout << "Digite o valor que deseja buscar" << endl;
cin >> y;

do{
if(y > vetor[m]){
-se o valor a buscar for maior que o valor da
posio m, a comparao
e = m;
posies a frente.

recalcula o meio do vetor para buscar o valor em

m = (e+d)/2;
}else if(y < vetor[m]){ -se o valor a buscar for menor que o valor da
posio m, a
d = m;
posies anteriores.

comparao recalcula o meio para buscar em

m = (e+d)/2;
}
}while(y != vetor[m]);

-finaliza a busca ao encontrar o valor.

return m; - retorna a posio em que foi encontrado o valor.


}

10 - Um struct uma varivel especial que contm varias outras variveis


normalmente de tipos diferentes.
Struct funcionario{-esta a criao de um struct com 3 variaveis de tipos
diferentes
Int idade;

sendo assim uma estrutura heterognea.

String nome;
Float salario;
};

11 LIFO uma estrutura onde o ultimo dado inserido o primeiro a sair,


no se pode tirar um dado que tenha inserir antes sem antes tirar este,
como se fosse uma pilha.
a. Push coloca os dados inseridos na estrutura (pilha) se ela no
estiver cheia, e isso sempre no topo.
b. Pop remove os dados inseridos na estrutura (pilha) se ela no
estiver vazia, e isso sempre no topo.
c. Exibir_pilha exibe a estrutura de forma empilhada onde os
valores ficam na ordem em que foram inseridos de cima pra
baixo, onde o ultimo valor inserido fica no topo da pilha.
d. Pilha_vazia verifica se a pilha esta vazia.
e. Pilha_cheia verifica se a pilha esta cheia
f.

Topo O topo onde so acrescentados e tirados os valores da


pilha, quando tirado um dado da pilha o topo tambm perde
uma posio, para que o prximo possa ser inserido nesse
mesmo lugar.

12 - #include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iomanip>
#include <math.h>
#include <locale>
#define tamanho 100

using namespace std;

struct pilha{
int topo;
int dado[tamanho];
};

bool pilhaCheia(pilha p){


if(p.topo == (tamanho-1)){
return true;
}else{
return false;
}
}

bool pilhaVazia(pilha p){


if(p.topo == -1){
return true;
}else{
return false;
}
}

pilha push(int valor, pilha p){


if(pilhaCheia(p)){
cout << "A pilha ja esta cheia" << endl;
getch();
return p;
}
if(valor%2 == 0){

p.topo++;
p.dado[p.topo] = valor;
}
return p;
}

pilha pop(pilha p){


if(pilhaVazia(p)){
system("cls");
cout << "\nA pilha ja esta vazia!" << endl;
getch();
return p;
}
cout << "O valor " << p.dado[p.topo];
cout << " foi removido da posicao " << p.topo << endl;
getch();
p.dado[p.topo] = '\0';
p.topo--;
return p;
}

void exibir_pilha(pilha p){


system("cls");
cout << "\n**Visualizacao de Pilha**" << endl;
for(int i=p.topo;i>=0;i--){
cout << "\nNumero " << p.dado[i];
cout << " na posicao " << i << endl;
}
cout << "**Fim da visualizacao**" << endl;
getch();
}

int main(){
setlocale(LC_ALL, "Portuguese");

pilha p1; int valor; char tecla;


p1.topo = -1;

do{
system("cls");
cout << "\n***Menu da pilha***" << endl << "1 - Push(Inserir)" <<
endl << "2 - Pos(remover)" << endl << "3 - Exibir" << endl << "4 - Sair"
<< endl << endl << "Item> ";
tecla = getch();

if(tecla == '1'){
system("cls");
cout << "Digite o valor: " << endl;
cin >> valor;
p1 = push(valor, p1);
}else if(tecla == '2'){
p1 = pop(p1);
}else if(tecla == '3'){
exibir_pilha(p1);
}
}while(tecla != 27 && tecla != '4');
return 0;
}

13 - #include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

#include <iomanip>
#include <math.h>
#include <locale>
#include <string.h>
#define tamanho 100

using namespace std;

struct pilha{
int topo;
string frase[tamanho];
};

bool pilhaCheia(pilha p){


if(p.topo == (tamanho-1)){
return true;
}else{
return false;
}
}

bool pilhaVazia(pilha p){


if(p.topo == -1){
return true;
}else{
return false;
}
}

pilha push(string palavra, pilha p){


if(pilhaCheia(p)){

cout << "A pilha ja esta cheia" << endl;


getch();
return p;
}
p.topo++;
p.frase[p.topo] = palavra;
return p;
}

pilha pop(pilha p){


if(pilhaVazia(p)){
system("cls");
cout << "\nA pilha ja esta vazia!" << endl;
getch();
return p;
}
cout << "A frase " << p.frase[p.topo];
cout << " foi removido da posicao " << p.topo << endl;
getch();
p.frase[p.topo] = '\0';
p.topo--;
return p;
}

void exibir_pilha(pilha p){


system("cls");
cout << "\n**Visualizacao de Pilha**" << endl;
for(int i=p.topo;i>=0;i--){
cout << "\nFrase " << p.frase[i];
cout << " na posicao " << i << endl;
}

cout << "**Fim da visualizacao**" << endl;


getch();
}

int main(){
setlocale(LC_ALL, "Portuguese");

pilha p1; string palavra; char tecla;


p1.topo = -1;

do{
system("cls");
cout << "\n***Menu da pilha***" << endl << "1 - Push(Inserir)" <<
endl << "2 - Pos(remover)" << endl << "3 - Exibir" << endl << "4 - Sair"
<< endl << endl << "Item> ";
tecla = getch();

if(tecla == '1'){
system("cls");
cout << "Digite a frase ou palavra: " << endl;
getline(cin,palavra);
p1 = push(palavra, p1);
}else if(tecla == '2'){
p1 = pop(p1);
}else if(tecla == '3'){
exibir_pilha(p1);
}
}while(tecla != 27 && tecla != '4');
return 0;
}

Você também pode gostar