Buscar

COLETANEA 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 19 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 19 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 19 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

QUESTIONÁRIO DE ESTRUTURA DE DADOS
Para utilizarmos as structs, podemos criar variáveis e / ou vetores para manipular seus valores. Supondo o seguinte registro: 
struct funcionario
{ 
char nome[50]; 
int matricula; 
}; 
Das opções apresentadas qual esta correta na criação de um vetor dentro do main(), para o registro funcionario? 
funcionario func[40];
Nas listas encadeadas podemos fazer referência a uma parte de um nó, através de um outro nó. Na estrutura apresentada o ponteiro p armazena o endereço do próximo nó. 
struct teste 
{ 
int valor; 
struct teste *p; 
}; 
Das opções apresentadas qual permite armazenar na variável val do tipo inteiro o valor que está no nó 
seguinte ao nó posicionado , sabendo-se que aux, contem o endereço do nó atual. 
 Ponto s da Questã o: 1
val= aux->p->valor;
Sabe-se que um protótipo de uma função é o cabeçalho da função com ;(ponto-e-vírgula) ao final. E que nas funções a passagem de parâmetros se dá por valo r ou por referência. Para o pro tótipo: void troca(float&,float&); pode-se dizer que:
É um protótipo de função que recebe dois argumentos que são endereços que armazenam números reais, por passagem por ref erênci a. E a função não retorna nada para a função chamadora.
Assinale a opção correta. A função que calcula a quantidade de elementos de uma fila dinâmica, considerando 
 struct no { 
 int dado; 
 struct no *link; 
 }
é?
int contar(no *p) 
{ 
 int contador; 
 contador = 0; 
 while (p != NULL) 
 { 
 contador++; 
 p = p->link; 
 } 
 return contador; 
}
Assinale a opção correta. 
Considere o seguinte trecho na main : 
int v[ ] ={10,20,30,40} ; 
 Eureka(v );
 
sendo a função
void Eureka(i nt v[ ]) { 
 for (int i = 0; i < 4; i++) 
 v[i] = 2 * i; 
}
Após a execução da função Eureka, v armazenará os seguintes valores :
0 2 4 6
O algoritmo da busca binária é mais eficiente que o da busca sequencial. Entretanto, est e algorit mo só pode ser utilizado em v etores ordenados. Marque a opção que expl ica esta limitação do algoritmo.
A ordenação dos dados é importante, pois após a div isão do espaço de busca, a part e dos dados descartados não pode conter o elemen to procurado
Considere a função que deve implementar a busca seqüencial. Note que ela es tá incompleta e que você deve completá-la. 
int buscaSequencial(int v[ ], int valor) 
{ 
 int i; 
 for (i = 0; i < 10; i++) 
 _______ ______ _____ 
 __________ 
 ____ ______ __ 
} 
Assinale a opção que mostra a função completa e correta
int buscaSequencial(int v [ ], in t valor) 
{ 
 int i; 
 for (i = 0; i < 10; i++) 
 if(v[i] == valor) 
 return i ; 
 return -1; 
}
No desenvolvimento de sistemas podemos recorrer as mai s diversas estruturas de dados a f im de propor a melhor solução para determinados problemas. Supondo que um problema sugere a necessidade de armazenar tem porari amente alguns dados (Endereço, telefon e e idade) de uma determinada pessoa, qual das estruturas é a mais adequada?
Struct
Assinale a opção correta. Pilha é uma estrutura de dados que :
Segue o critério LIFO e pode ser implem entada usando-se lista seqüencial ou lista en cadeada.
Considere 
struct nodupla { 
 int dado; 
 struc t *dlink, //aponta para o nó à direita 
 *elink; //aponta para o nó à esquerda 
};
Assinale a função que corretamente substitui o valor armazenado no último nó de um a lista duplamente encadeada não vazia pelo valor 50.
void substituir(nodupla *p) 
{ 
 while (p->dl ink != NULL) 
 p = p->dlink; 
 p->dado = 50; 
}
Os agentes Leo e Lia receberam sequências de números de seus contatos. Para saberem qual o próximo passo da missão, precisam descobrir que números se repetem nas sequências recebidas por cada um. 
 Faça um a função que receba dois vetores v e w de inteiros com o parâmetros e gere um vetor z, resultante da interseçã o entre v e w. 
Protótipo da função : 
 bool intersecao(int v[ ], int w[ ], int z [ ] , int nv , int nw , int & n); 
onde nv: quantidade de elementos em v 
 nw : quantidade de elementos em w 
 n : quantidade de elem entos no vetor z 
Note : 
 Inicialmente n vale zero. 
 Deverá ser retornado true (sucesso na inters eção) ou false (fracass o na interseção). 
Inicialmente n vale zero. 
 Deverá ser retornado true (sucesso na inters eção) ou false (fracass o na interseção).
Inicialmente n vale zero. 
 Deverá ser retornado true (sucesso na inters eção) ou false (fracass o na interseção).
Inicialmente n vale zero. 
 Deverá ser retornado true (sucesso na inters eção) ou false (fracass o na interseção).
Inicialmente n vale zero. 
 Deverá ser retornado true (sucesso na inters eção) ou false (fracass o na interseção)
Inicialmente n vale zero. 
Deverá ser retornado true (sucesso na inters eção) ou false (fracass o na interseção)
bool intersecao(int v[], int w[], int inter[], int nv , int nw , int &n) { 
bool achou = false; 
for (int i = 0; i < nv; i++) 
for (int j = 0; j < nw; j++) 
if (v[i] == w[j]) { 
inter[n] = v[i]; 
achou = true;
n++;
}
return achou;
}
As estruturas de dados podem ser caracterizadas como sendo uma forma orga nizada de armazenar dados ou informações na memória, de modo a otimizar o acesso a estes. Muitas vezes existem algoritmos de manipulação dados associados a estas estruturas. Verifique as seguintes sentenças: 
I-Filas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados. 
II-As Pilhas são estruturas que recuperam os dados na ordem reversa em que estes 
foram armazenados. 
III-As Pilhas são estruturas que recuperam os dados na ordem direta em que estes 
foram armazenados. 
IV-As Filas são estruturas que recuperam os dados na ordem reversa em que estes 
foram armazenados. 
Marque a alternativa CORRETA: I e II estão corretas
A alocação dinâmica de memória vem possibilitar a criação de tipos de dados e estruturas de qualquer tamanho durante a execução do programa. Quais são os operadores que respectivamente alocam e liberam espaço na memória? New e delete.
Defina, exemplifique e cite as vantagens da busca binária:
Permite uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio, ou antes, do meio ou depois do meio, comparando o valor de busca com o elemento da lista a ser procurado A busca binária é mais rápida que a seqüencial na maioria das vezes. A busca de uma palavra em um dicionário, com a busca seqüencial, se a palavra desejada estiver no final do dicionário levaria muito tempo indo de página em página.
As listas simplesmente encadeadas tem como característica:
Possuir um nó com no mínimo dois elementos, sendo um deles um ponteiro para o próximo nó.
Determinado método de ordenação seleciona o menor elemento dent ro do conjunto e coloca na primeira posição, depois o segundo men or e coloca na segunda posição e assim por dian te até que todo o conjunto esteja ordenado. Qual das opções apresenta este método?
Selection sort;
 
Analise as afirmativas abaixo e selecione a alternativa correta:
I Algumas aplicações da estrutura de dados grafo são: Diagrama de Entidade 
Relacionamento e Redes de computad ores. 
 
II Árvore e lista duplamente encadeada são estruturas não lin eares. 
III A Fila é uma estrutura não linear e a inserção de um elemento aco ntece ao final. 
IV A Lista é uma das estruturas de dados mais simples , mas não se pode ordená -la. 
 
V O uso de ponteirosé fundamental par a construção de listas encadeadas. 
I e V são verdadeiras
Leia com atençãoas afirmativas abaixo e assinale a resposta correta. 
 
I A estrutura de dados que melhor representa os diretórios ou pastas de arquivos do computador é a árvore. 
II A estrutura de dados FI LA é não linear ass im como o Grafo. 
III O termo folha em uma estrutura de dados é usado para um nó sem filhos e que tem grau 0, 
IV O grau de um a árvore é definido pelo n úmero de subárvores de um nó. 
V O grafo é um a estrutura de dados que tem limitação para o núm ero de vértices. 
VI Uma das aplicaçõ es da estrutura de dados gr afo é a Com putação Gráfica. 
I, III, IV e VI são afirm ativas verdadeiras
Na maioria dos sistemas operacionais, os arquivos são organizados hierarquicamente em um esquema de diretórios (pastas) e sub-diretórios. Qual a estrutura mais adequada para representar este problema ? Árvore
Navegadores para internet armazenam os últimos endereços visitados em uma estrutura de 
dados. Cada vez que um novo site é visi tado, o endereço do site é adicionado na estrutura de 
endereços. Quando se aciona o retorno ("back "), o navegador permite que o usuário retorne no último site visitado e retira o endereço d o site da estrutura de dados. 
Qual a estrutura de dados mais adequada para este problema? Pilha
Estão entre algumas das possíveis formas de se estruturar dados: 
Grafos, lista ordenada, vetores.
As variáveis em programação são utilizadas para armazenar um valor de determinado tipo em um espaço reservado na memória. Em algumas linguagens de programação podemos declarar, ou seja, reservar um espaço na memória, fora do escopo da função principal, e fora do escopo de qualquer outra função. Ao fazer a declaração desta forma estamos declarando uma variável do tipo:Global
A declaração de variáveis na programação é o ato de reservar um espaço na memória para poder armazenar valores de um determinado tipo. Essas variáveis podem ser classificadas como variáveis locais e globais. Sendo assim, qual das situações abaixo representa melhor o conceito das variáveis globais.
Ao modificar o valor da variável 'X' na função "modifica" seu valor modificado poderá ser apresentado em qualquer outra função do programa.
Suponha uma listagem, contendo número de inscrição e pontuação (ordenada pelo número de inscrição) dos candidatos para o cargo de Analista de Sistemas de uma grande empresa pública. São 1024 candidatos inscritos e o sistema implementado para consulta do resultado, permite busca binária ou busca sequencial pelo número de inscrição. O número máximo de comparações executadas se fosse utilizada a busca binária e se fosse utilizada busca sequencial, respectivamente, seria de:
512 e 1024
Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades:Se o item for igual ao item que está na metade do vetor, o item foi encontrado.
Marque a afirmativa correta para a "Busca ou pesquisa binária":
Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio. 
Os algoritmos de busca são muito utilizados em estrutura de dados. Sendo assim, o algoritmo que realiza a busca em vetores e que exige acesso aleatório aos elementos do mesmo e que parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca comparando o elemento que se deseja com o elemento do meio do vetor, é chamado de: Pesquisa binária
O processo de rearranjar um conjunto de dados em uma ordem crescente ou decrescente é chamado de ordenação. Existem várias técnicas de ordenação, entretanto a técnica que procura o menor valor entre todos os elementos do vetor e troca-o pelo primeiro elemento; para os n - 1 elementos restantes, determinação do elemento de menor valor e troca pelo segundo elemento e assim sucessivamente, é chamado de:Seleção
Entre os diversos algoritmos de pesquisa existentes, c ertamente os mais famosos são os da pesquisa sequencial e o da pesquisa binária. A busca ou pesquisa sequencial pode ser aplicada em vetores independente destes estarem ordenados, entretanto a busca binária só se aplica em vetores ordenados. Seja o vetor A= {10,35,41,55,69,70,98}, suponha que o número 70 foi pesquisado pelo algoritmo da busca sequencial e também pelo algoritmo da busca binária, ambos algoritmos realizam testes nos elementos do vetor até a char o que procuram ou definirem que o elemento não se encontra no vetor. Sendo assim marque a alternativa que expressa o número de testes realizados pela busca sequencial e o número de testes realizados pela busca binária, respectivamente, até encontrarem o 70.
6 e 2
Marque a afirmativa correta para a "inserção incremental".
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos.
Existem vários tipos de algoritmos para realizar a ordenação dos elementos, onde um algoritmo de ordenação deve rearranjar o vetor de forma a estabelecer uma ordem entre os elementos. Marque a alternativa correta que cita o algoritmo cuja descrição é: "considera cada elemento uma vez inserindo-o em seu lugar correto entre os elementos que já estão em ordem". E o seu passo a passo pode ser descrito como: "o elemento é inserido entre os ordenados movendo-se os elementos maiores que ele uma posição para a direita e posteriormente inserindo-o na posição vaga".Inserção
Existem vários tipos de estruturas de dados do tipo dinâmicas, entretanto, uma estrutura considerada simples são as listas. Pode-se implementar vários tipos de listas, entretanto, a estrutura que apresenta o conceito de LIFO é:Pilha
Tanto a operação TOP (acessa topo), quanto à operação POP (remover), permite acessar o último elemento armazenado em uma Pilha. Quanto à diferença entre ambas as operações em relação ao estado da Pilha é correto afirmar:
Somente a operação POP altera o estado da Pilha
A estrutura de dados Pilha funciona de acordo com o seguinte fundamento básico:
O primeiro a entrar é o último a sair.
Ao remover um elemento armazenado em uma pilha é necessário a atualização da variável (Topo) indicadora de posição. Qual das alternativas abaixo está correta?
Após a operação de remoção decrementa a variável indicadora de posição.
No ENEM 2012, 5790989 estudantes confirmaram inscrição. 
 
Evidentemente, muitos f altaram às provas e o n úmero exato não era sabido quando foi pedido ao 
desenvolvedor que definisse uma função pa ra que pudesse listar toda inscrição, e respectiva nota de 
redação tabulada, que tivesse alcançado uma pontuação maior ou igual à nota procurada e, ao final, o 
total de estudantes que atingiram essa meta. 
 
Como só interessava a nota de redação, o desenvolvedor definiu a struct abaixo e começou a definir 
a função queFaz(...) para que pudesse atender ao que foi pedido, usando a estrutura de dados Lista 
Sequencial. 
Entretanto, ele não conseguiu finalizar. Poderia você ajudá-lo? 
No ENEM 2012, 5790989 estudantes confirmaram inscrição. 
 
Evidentemente, muitos f altaram às provas e o n úmero exato não era sabido quando foi pedido ao 
desenvolvedor que definisse uma função pa ra que pudesse listar toda inscrição, e respectiva nota de 
redação tabulada, que tivesse alcançado uma pontuação maior ou igual à nota procurada e, ao final, o 
total de estudantes que atingiram essa meta. 
 
Como só interessava a nota de redação, o desenvolvedor definiu a struct abaixo e começou a definir 
a função queFaz(...) para que pudesse atender ao que foi pedido, usando a estrutura de dados Lista 
Sequencial. 
Entretanto, ele não conseguiu finalizar. Poderia você ajudá-lo? 
No ENEM 2012, 5790989 estudantes confirmaram inscrição. 
 
Evidentemente,muitos f altaram às provas e o n úmero exato não era sabido quando foi pedido ao 
desenvolvedor que definisse uma função pa ra que pudesse listar toda inscrição, e respectiva nota de 
redação tabulada, que tivesse alcançado uma pontuação maior ou igual à nota procurada e, ao final, o 
total de estudantes que atingiram essa meta. 
 
Como só interessava a nota de redação, o desenvolvedor definiu a struct abaixo e começou a definir 
a função queFaz(...) para que pudesse atender ao que foi pedido, usando a estrutura de dados Lista 
Sequencial. 
Entretanto, ele não conseguiu finalizar. Poderia você ajudá-lo? 
No ENEM 2012, 5790989 estudantes confirmaram inscrição. 
 
Evidentemente, muitos f altaram às provas e o n úmero exato não era sabido quando foi pedido ao 
desenvolvedor que definisse uma função pa ra que pudesse listar toda inscrição, e respectiva nota de 
redação tabulada, que tivesse alcançado uma pontuação maior ou igual à nota procurada e, ao final, o 
total 
No ENEM 2012, 5790989 estudantes confirmaram inscrição. 
 
Evidentemente, muitos f altaram às provas e o n úmero exato não era sabido quando foi pedido ao 
desenvolvedor que definisse uma função pa ra que pudesse listar toda inscrição, e respectiva nota de 
redação tabulada, que tivesse alcançado uma pontuação maior ou igual à nota procurada e, ao final, o 
total 
o só interessava a nota de redação, o desenvolvedor definiu a struct abaixo e começou a definir 
a função 
O almoxarifado de um órgão pediu ao técnico de informática que elaborasse um sistema de custeio que, para cada saída de material, considerasse o custo do mais recente que houvera dado entrada no almoxarifado. O técnico deve desenvolver um programa para tratar com uma estrutura de dados do tipo?LIFO
Um jogo de memória fornece sequências de números e o jogador deve dizer qual a sequência inversa para cada nova sequência fornecida pelo jogo. Qual a estrutura de dados mais adequada para modelar esse jogo ?Pilha
Analise as afirm ativas sobre uma pilha estática e assinale a opção corret a. 
 
I Ordenar é um a operação que não se f az com pilha. 
II Inserir dados é um a operação que se fa z com a pilha. 
III Remover dados em qualquer posição é uma operação que se f az com a pilha. 
IV Verificar se a Pilh a está cheia é neces sário quando se deseja inserir n ela. 
V Inicializar um a pilha significa zerar todas as variáveis do vetor. 
I, II e IV estão corretas. 
As filas sequenciais são estruturas de dados utilizadas em diversas aplicações, tais como fila de processo, fila de impressão, sistemas de senha etc. Entretanto, nas aplicações onde há muita movimentação de dados, inserções e remoções de dados na fila, surgem espaços ociosos que podem levar ao fenômeno chamado de esgotamento de memória. Para sanar este problema pode-se substituir a fila sequencial por:Fila circular
As estruturas de dados podem ser do tipo estática e dinâmica. As listas são estruturas parecidas com vetores podendo ser do tipo dinâmica. Entretanto, existem várias implementações de estruturas do tipo listas. Dessa forma, a estrutura que para o acesso de um dado, este precisa estar na saída, caso contrário, precisa remover os elementos a sua frente, é chamada de:Fila
Para a criação de uma Fila seqüencial basta iniciar as variáveis de início e final, ou seja, apontá-las para as posições iniciais do vetor. O que alteraria na rotina de inserir se a variável final fosse inicializada com o valor -1 (menos um):
Antes da inserção deve-se fazer o incremento da variável final
Vários conceitos foram estudados quando se falou sobre ponteiros e alocação dinâmica. Entre eles, o de Fragmentação Externa. Assinale a opção que explica o que significa: Espaço de Memória perdido entre os segmentos.
Dr. Pei Tam possui uma lista não ordenada de pacientes de seu consultório em que registra apenas 
o nome endereço e o telefone de cada paciente. Como não há limites para o crescimento de sua 
lista, como se pode implementar a inserção de um novo paciente na lista, sabendo que cada 
paciente é do tipo Paciente e a lista é do tipo List assim definidos : 
struct Paciente { 
 long int matricula; 
 string nome, endereco e tel; 
}; 
struct List { 
 Paciente p; 
 struct List *link; 
 };
Dr. Pei Tam possui uma lista não ordenada de pacientes de seu consultório em que registra apenas 
o nome endereço e o telefone de cada paciente. Como não há limites para o crescimento de sua 
lista, como se pode implementar a inserção de um novo paciente na lista, sabendo que cada 
paciente é do tipo Paciente e a lista é do tipo List assim definidos : 
struct Paciente { 
 long int matricula; 
 string nome, endereco e tel; 
}; 
struct List { 
 Paciente p; 
 struct List *link; 
 };
Dr. Pei Tam possui uma lista não ordenada de pacientes de seu consultório em que registra apenas 
o nome endereço e o telefone de cada paciente. Como não há limites para o crescimento de sua 
lista, como se pode implementar a inserção de um novo p
Sou uma empresária que quer crescer e por isso, tenho que aumentar progressivamente a minha lista de clientes, sem limitar este crescimento. Assim, à medida que novos clientes são cadastrados, posso, se necessário, contratar mais e mais empregados. Marque a opção que especifica o tipo de lista e o tipo de alocação de memória mais adequados para este problema. Lista encadeada e alocação dinâmica de memória.
Vetores são elementos considerados longos quando usados como parâmetros de funções, mesmo assim pode-se passar um vetor c omo um argumento de uma função. Seja o exemplo a seguir codificado em C++:
int main() 
{ 
 int vetor[]={1,2,3,4,5}; 
 saída(vetor,5); 
 return 0; 
} 
int main() 
{ 
 int vetor[]={1,2,3,4,5}; 
 saída(vetor,5); 
 return 0; 
} 
Neste exemplo a função saída( ) está sendo chamada e recebe como parâmetros o vetor e o inteiro 5. Marque a alternativa que ilustra uma possibilidade correta de protótipo para esta função. 
nt main() 
{ 
 int vetor[]={1,2,3,4,5}; 
 saída(vetor,5); 
 return 0
nt main() 
{ 
 int vetor[]={1,2,3,4,5}; 
 saída(vetor,5); 
 return 0
void saída(int *vetor, int dim);
 
 
Qual das seguintes estruturas de dados é classificada como heterogênea?Registro
Para simular uma lista encadeada simplesmente pode se utilizar as estruturas de ponteiros. Como pode ser definida uma estrutura do tipo ponteiro?
Um objeto que contém um endereço de memória.
Assinale a opção correta. Sobre pilha dinâmica podemos afirmar que : 
Usa o critério LIFO e é implementada usand o-se l istas encadeadas.
As estruturas de dados são importantes para a programação porque facilitam a pesquisa, pois permitem a ordenação dos dados de forma crescente ou decrescente. Dessa forma, assinale a alternativa correta que define um tipo de dado estruturado.
Permitem agregar mais do que um valor em uma variável, existindo uma relação estrutural entre seus elementos.
A armazenagem de dados pode ocorrer temporariamente em uma variável, um vetor ou em uma estrutura chamada Struct na linguagem C e C++. Como se procede a atribuição de valor a um determinado campo de uma estrutura do tipo Struct?
Nome da estrutura ponto nome do campo
Marque a afirmativa que represente uma Lista Circular Simplesmente Encadeada:
O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista.
Em relação as estruturas de dados, aquela que corresponde ao armazenamento em uma lista linear com a posição relativa (não contígua) na memória de dois nós consecutivos da lista é conhecida por alocação:Encadeada.
As listas encadeadas podemser elaboradas de duas formas utilizando uma técnica de encadeamento simplesmente ou encadeamento duplo. O que difere uma lista simplesmente encadeada de uma lista duplamente encadeada?
Em uma lista simplesmente encadeada cada nó aponta para um único nó enquanto a lista duplamente encadeada aponta para mais de um nó.
Um tipo de estrutura de dados é declarada em C como: 
typedef struct no *apontador; 
 struct no{ 
 int valor; 
 apontador esq, dir; 
} 
onde esq e dir representam ligações para os dados da esquerda e direita, respectivamente. Qual das seguintes alternativas é uma implementação correta da operação que inverte as posições dos dados da esquerda e da direita uma estrutura p, onde t é um apontador auxiliar.
t=p->dir; 
p->dir = p->esq; 
p->esq = t; 
Marque a afirmativa que represente uma concatenação em listas.
Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante.
Manter os dados ordenados, facilita quando precisamos recuperar dados armazenados, para tal foram desenvolvidos algoritmos que são divididos em métodos simples e sofisticados. 
Das opções apresentadas qual apresenta apenas métodos simples? 
Selection sort, Insertion sort e Bubble sort;
Chama-se “membros” os elementos que compõe uma estrutura (struct). E para acessá-los utiliza-se o operador ponto (.) . Suponha que as seguintes declarações tenham sido feitas: 
struct atleta { 
float altura; 
float peso; 
}; 
atleta Paulo; 
atleta Marcos; 
Marque a única alternativa contendo uma atribuição CORRETA:
Paulo.altura=1.80;
Na manipulação de dados em uma lista de um determinado sistema, onde cada nó desta lista possui um conjunto de dados e um ponteiro indicando onde será encontrado o próximo nó, gerado durante a execução do programa, caracteriza uma lista:
Dinâmica Encadeada
No desenvolvimento de sistemas devemos utilizar a modularização como forma de melhorar nossos sistemas, inserindo agilidade, facilidade de manutenção e etc. 
Quando em um programa um determinado pedaço do código ocorre várias vezes vezes fazendo as seguintes atividades: 
- Lendo alguns valores informados pelo usuário; 
- fazendo alguns cálculos; 
- e armazenando o resultado. 
A melhor solução proposta seria
Criar uma função que receba os dados lidos como parâmetro execute os cálculos e retorne o resultado.
Editores de texto geralmente oferecem um mecanismo de reversão de operações (“O famoso desfazer, undo”), que cancela operações recentes e reverte um documento ao estado anterior ao da operação realizada. Que tipo de estrutura de dados seria melhor aplicada para este mecanismo? Pilha
 
Analise o seguinte trecho de algoritmo de ordenação de dados, cujos elementos estão dispostos em um vetor de nome v com n elementos. 
 { int i, j, aux; 
 for (j = 1; j < n; j++) 
 for (i=j; i > 0 && v[i1]>v[i]; i){ 
 aux = v[i1]; 
 v[i1]= v[i]; 
 v[i] = aux; 
 v[i] = aux; 
 } } 
} 
Assinale o método ao qual o trecho de algoritmo pertence. 
Inserção 
 
O seguinte trecho de programa abaixo representa qual tipo de estrutura de ordenação? 
void ordenar(float v[], int n) // n é o no. de elementos em v 
{ 
int i , // índice 
aux, // auxiliar para troca 
trocou = true, 
fim = n - 1; 
while (trocou) 
{ 
trocou = false; // sinaliza que é falso que trocou 
for (i = 0; i < fim; i++) 
{ if (v[i] > v[i+1]) 
{ 
aux = v[i]; 
v[i] = v[i+1]; 
v[i+1] = aux; 
// sinaliza que é verdadeiro que trocou 
trocou = true; 
} // fim if 
} // fim for 
fim--; // decrementa o fim 
} // fim while 
} // fim da função 
 Bublesort
 As estruturas de dados permitem o uso de certos algoritmos para a ordenação dos elementos de forma a facilitar a consulta de determinado elemento. Existem vários tipos de algoritmos para realizar a ordenação dos elementos, onde um algoritmo de ordenação deve rearranjar o vetor de forma a estabelecer uma ordem entre os elementos. O trecho de código abaixo descreve o algoritmo chamado: 
algoritmo ordena (int a[], int n){ 
 Para i da primeira posição até a penúltima faça 
 mínimo = i 
 para j da posição seguinte a i até a ultima posição faça 
 se (a[j] < a[mínimo]) 
 mínimo =j; 
 fim para 
 fim para 
 troca(a[mínimo],a[i]); 
fim algoritmo 
 Seleção 
 
A técnica LIFO, utilizada em programação estruturada, é fundamentada no conceito de: 
Pilha. 
 Em uma pesquisa sequencial a lista deve estar? 
 Ordenada ou desordenada. 
 
Considere uma estrutura de dados do tipo vetor. Com respeito a tal estrutura, é correto que seus componentes são caracteristicamente: 
 Homogêneos e de acesso aleatório por intermédio de índices. 
O registro de ativação de uma sub-rotina é o conjunto das informações que devem/precisam ser alocadas em memória. Assinale abaixo a única opção que representa a composição destas informações. 
endereço de retorno / variáveis locais / parâmetros passados 
 
Sobre o funcionamento da busca binária, é incorreto afirmar que dividindo seu vetor em duas metades. 
Se o item for igual ao item que está na metade do vetor, o item não foi encontrado. 
Ao remover um elemento armazenado em uma pilha é necessário a atualização da variável (Topo) indicadora de posição. Qual das alternativas abaixo está correta? 
 Após a operação de remoção decrementa a variável indicadora de posição. 
 
Podemos dizer que estrutura de dados é: 
 O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações. 
A técnica LIFO (last in first out), utilizada em programação estruturada, é fundamentada no conceito de: Pilha
Considere uma estrutura de dados, representada pela variável P, com procedimentos de inclusão, exclusão e consulta do próximo elemento (e) disponível na estrutura, obedecendo às seguintes propriedades: 
1) excluir (inclui (e,P))= P 
2) próximo (inclui (e,P))= e 
Pode-se concluir, então, que P corresponde à seguinte estrutura de dados? 
PILHA 
 
Os métodos de ordenação são muito utilizados em estruturas de dados para facilitar a busca e a recuperação posterior de itens de conjuntos ordenados. Existem vários métodos de ordenação, por este motivo, marque corretamente a alternativa que apresenta o código do método de seleção.
 
void ordena(int v[], int n){ 
int i, j, menor, aux; 
for (j = 0; j < n-1; j++) { 
 for (i = j+1; i < n; i++) { 
 if (v[i] < v[j]) { 
 aux = v[j]; 
 v[j] = v[i]; 
 v[i] = aux; 
 } }} 
} 
Sobre estrutura de dados, identifique o que está correto afirmar. 
 I. Pilha é uma estrutura de dados com acesso restrito aos seus elementos, uma vez que eles são colocados e retirados por um único lado e são ordenados pelo princípio LIFO (last in first out). Assim, sempre que um elemento é adicionado ou retirado seu topo é alterado. 
II. Pilha é o tipo de estrutura usada, por exemplo, na avaliação de expressões numéricas, na recursividade e pelos compiladores, na passagem de parâmetros para as funções. 
III. Registro é uma estrutura básica que permite guardar coleções de dados de diferentes tipos, sendo normalmente utilizado quando um objeto tem diferentes atributos, isto é, contém campos de diferentes tipos. 
IV. Lista pode conter um número qualquer de elementos, expandindo-se ou contraindo-se conforme o elementos são inseridos ou retirados. Nesse tipo de estrutura, os acessos tanto podem ser feitos sequencialmente como diretamente. 
V. Fila, assim como a pilha , é uma versão especial de lista, e como tal, seus elementos são ordenados pelo princípio LIFO (last in first out). 
 (X) I, II e III. 
Marque a afirmativa correta para a "inserção incremental". 
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. 
 
A implementação da pilha de chamadase retorno de funções é um tópico muito importante. Além disso, estratégias para o gerenciamento de outra área de memória chamada de heap são importantes para a comprensão de objetos dinâmicos como ________________. Com base na afirmativa marque a opção correta para completá-la: 
MATRIZES 
Analisando o trecho de código abaixo, marque a alternativa correta que apresenta o que será impresso na tela do usuário. Sabe-se que na linguagem C os ponteiros são representados pelo sinal de asterisco (*), o endereço de memória pelo sinal & e a função de impressão é denominada printf. 
 
void funcao ( int *a, int *b){ 
 int c; 
 c = *a; 
 a = b; 
 *b = c; 
} 
main(){ 
 int a=2, b=3; 
 funcao (&a, &b); 
 printf("%d - %d \n",a,b); 
} 
 
2 - 2 
Um órgão público adotou dois sistemas de senhas para atender os cidadãos na ordem de chegada. O sistema I atende os não idosos. O sistema II atende os idosos. Nessa situação: 
Tanto o sistema I, quanto o II, adotam o esquema FIFO de organização de dados. 
 
 Qual o valor da variável a ao final da execução do trecho de programa a seguir? 
int main() { 
int a, b, *p; 
a=4; 
b = 2; 
p = &a; 
a++; 
*p = a + b; 
(*p)++; 
(*p) += a; 
cout << "\n a = " << a << endl; 
return(0);} 
16 
Com relação as afirmações abaixo, a respeito de lista lineares, assinale as Verdadeiras e as Falsas. Indique a alternativa que representa a sequência correta: 
(V) Nas listas encadeadas não precisamos saber previamente o número de elementos a serem armazenados. 
(V) Podemos aumentar e diminuir o tamanho da lista encadeada quando quisermos, enquanto que a lista sequencial não. 
(V) Quando o número de acessos randômicos a uma área de armazenamento é muito maior que o número de inserções e remoções de elementos armazenados, a organização dessa área de armazenamento por meio de uma lista encadeada resulta em desempenho melhor que o apresentado por organização feita usando uma lista linear. 
Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são altamente especializadas, destinando-se a algumas tarefas específicas. Dessa forma a definição de Estrutura de Dados está expressa na alternativa: 
É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados de modo eficiente. 
 As estruturas de dados em programação são muito utilizadas para tornar o acesso aos dados mais eficiente e organizado. A estrutura de dados considerada mais simples e tem como característica apresentar apenas uma dimensão é: Vetor 
 O processo de rearranjar um conjunto de dados em uma ordem crescente ou decrescente é chamado de ordenação. Existem várias técnicas de ordenação, entretanto a técnica que procura o menor valor entre todos os elementos do vetor e troca-o pelo primeiro elemento; para os n - 1 elementos restantes, determinação do elemento de menor valor e troca pelo segundo elemento e assim sucessivamente, é chamado de: Seleção
 
Marque a afirmativa que represente uma concatenação em listas. Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da necessidade. 
 Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante. 
Sistemas operacionais utilizam filas para gerenciar, tarefas, processos e recursos. Qual é a ordenação dos elementos armazenados aleatoriamente em uma lista do tipo LIFO? 
Ordem de entrada 
É correto afirmar sobre o funcionamento da busca sequencial. 
Os elementos são pesquisados de acordo com o índice. Pior caso: o elemento está no último índice do meu vetor
No programa abaixo, diga em que área de memória serão alocados os elementos de dados y e r, respectivamente. 
#include 
using namespace std; 
int x, y; 
float media( float a, float b ) 
{ float tmp; 
tmp = (a + b ) / 2.0; 
return ( tmp ); 
}i 
nt main() 
{f 
loat r; 
cout<<"Informe 2 valores: "; 
cin>>x>> y; 
r = media( x, y ); 
cout<<"\nMedia = "<< r<<"\n"; 
system ("pause"); 
} 
área de dados globais / área de pilha 
As estruturas de dados são importantes para a programação porque facilitam a pesquisa, pois permitem a ordenação dos dados de forma crescente ou decrescente. Dessa forma, assinale a alternativa correta que define um tipo de dado estruturado. 
Permitem agregar mais do que um valor em uma variável, existindo uma relação estrutural entre seus elementos. 
 Determinados tipos de estrutura de dados, são utilizados para implementar um algoritmo de escalonamento de processos do sistema operacional UNIX, chamado Round Robin, onde cada processo ganha uma fatia de tempo. Esse tipo de estrutura de dados é chamado de: 
Lista duplamente encadeada 
O método de ordenação que compara pares de chaves de ordenação, trocando os elementos correspondentes caso estejam fora de ordem é o método: Bolha 
 
Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada". 
Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos.
Com a utilização das estruturas de dados e seus tipos, em algumas situações é imprescindível a criação de funções que façam determinada verificação ou ação nestas estruturas. Dessa forma, analise a função abaixo e marque corretamente a alternativa que descreve as funcionalidades desta. 
 int funcao(float v[], float vl, int n){ 
 for (int i = 0; i < n; i++) 
 if (v[i] == vl) 
 return i; 
 return 1; 
} 
Retorna a posição de v se o valor vl foi encontrado. 
Observe o algorítmo a seguir, onde ocorre a passagem de parâmetro por valor e por Referência, espectivamente, de ITALIA para FIAT e de FRANCA para HONDA. Ao final do processamento, as variáveis ITALIA e FRANCA terão, respectivamente, os seguintes valores: 85 e VERDADEIRO 
 
Qual a importância de se entender a "ordenação" de dados ? 
A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação, tem-se conhecimento para resolver outros problemas. 
Analisando o trecho do algoritmo abaixo, 
 
Se topo < máximo 
Então inicio 
 Topo <- topo + 1 
 Pilha[topo] <- valor 
 Sucesso <- verdadeiro 
Fim 
pode-se afirmar que se trata de uma operação de: 
Inserção de um elemento em uma estrutura FIFO 
 
Assinale a opção certa. Quando não se escreve o protótipo de uma função ... 
É preciso definir a função antes do programa principal. 
O que acontece ao se inserir uma informação quando já usamos toda a área disponível do vetor (topo = fim)? 
Overflow 
Existem vários tipos de algoritmos para realizar a ordenação dos elementos, onde um algoritmo de ordenação deve rearranjar o vetor de forma a estabelecer uma ordem entre os elementos. Marque a alternativa correta que cita o algoritmo cuja descrição é: "considera cada elemento uma vez inserindo-o em seu lugar correto entre os elementos que já estão em ordem". E o seu passo a passo pode ser descrito como: "o elemento é inserido entre 
os ordenados movendo-se os elementos maiores que ele uma posição para a direita e posteriormente inserindo-o na posição vaga". 
Inserção 
 
Tanto a operação TOP (acessa topo), quanto à operação POP (remover), permite acessar o último elemento armazenado em uma Pilha. Quanto à diferença entre ambas as operações em relação ao estado da Pilha é correto afirmar: 
Somente a operação POP altera o estado da Pilha 
Considere: 
I - Os algoritmos de busca binária e de busca seqüencial executam processamento repetitivo. 
II - Os algoritmos de busca binária e de busca seqüencial utilizam a técnica de recursão. 
III - A busca seqüencial executa cada fase de repetição na forma de uma subtarefa da fase anterior. 
IV - A busca binária trabalha com uma forma circular de repetição. Está correto o que consta em: 
 I, apenas. 
 Se a e b são variáveis inteiras (int) e p1 e p2 ponteiros para int, quais das seguintes expressões de atribuição está errada? 
*p2 = &b; 
 Podemos dizer queum container é: 
O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo. 
 
Considerando que a lista a seguir, encontra-se criada na memória, o que será exibido pelo trecho de programa a seguir: 
Inicio -> |H| | ->|K| | ->|M| | 
 Valor proximo 
aux = inicio; 
while (aux -> proximo != NULL) 
aux = aux -> proximo; 
novo = new tipoNo; 
novo -> valor = 'F'; 
novo -> proximo = NULL; 
aux -> proximo = novo; 
aux = inicio; 
while (aux != NULL){ 
cout << aux -> valor << " "; 
aux = aux -> próximo; 
} 
H K M F
Assinale a alternativa que apresenta duas formas de passagem de parâmetros para uma rotina ou função: Por valor e por referência 
As variáveis em programação são utilizadas para armazenar um valor de determinado tipo em um espaço reservado na memória. Em algumas linguagens de programação podemos declarar, ou seja, reservar um espaço na memória, fora do escopo da função principal, e fora do escopo de qualquer outra função. Ao fazer a declaração desta forma estamos declarando uma variável do tipo: Global 
 Na área de estrutura de dados, em determinados casos, é necessário utilizar um tipo de dado onde seu valor serve como referência direta a outro valor alocado em outro espaço de memória. Este tipo de dado se chama: Ponteiro 
 
Para a criação de uma Fila seqüencial basta iniciar as variáveis de início e final, ou seja, apontá-las para as posições iniciais do vetor. O que alteraria na rotina de inserir se a variável final fosse inicializada com o valor -1 (menos um): 
Antes da inserção deve-se fazer o incremento da variável final 
Em programação podemos utilizar um recurso que modulariza o programa chamado função. As funções precisam ser ativadas para que possam ser executadas. Para isso, é necessário chamar a função pelo seu nome e enviar, quando necessário, os valores respectivos para os parâmetros de entrada. Ao enviar os valores para os parâmetros de entrada, o programa pode fazer uma cópia deste valor ou trabalhar em um endereço enviado.Quando se envia o endereço estamos ativando a função por meio de: Ponteiros. 
 
A armazenagem de dados pode ocorrer temporariamente em uma variável, um vetor ou em uma estrutura chamada Struct na linguagem C e C++. Como se procede a atribuição de valor a um determinado campo de uma estrutura do tipo Struct? 
Nome da estrutura ponto nome do campo 
A função que exibe o elemento que está no topo da Pilha é bem parecida com a função: 
Que exibe o primeiro elemento da Fila; 
Se usarmos as funções da Lista Simplesmente Encadeada para implementarmos Pilha e Fila Dinâmica e as afirmativas abaixo, podemos afirmar que: 
I) A função remove elemento no início pode ser usada nas duas estruturas; 
II) A função insere elemento no início pode ser usada nas duas estruturas; 
III) A função que libera a memória não pode ser usada nas duas estruturas. 
 A I está correta. 
 
Tínhamos um ponteiro de nome ptr e precisávamos construir uma estrutura que repetição enquanto o ponteiro não fosse nulo. Observe os trechos abaixo e assinale qual a afirmativa correta. 
 
I- if (ptr !=NULL) … 
II- if( !ptr ) … 
III- if(ptr) … 
IV- while (ptr !=NULL)… 
V- while (ptr)… 
 IV e V estão corretas. 
 
Os símbolos * e & são utilizados para manipularmos os ponteiros. Eles têm como objetivos colocados antes das variáveis respectivamente na declaração e durante a execução de: 
Indicar que é uma variável ponteiro e significando o endereço; 
Utilizamos ponteiros para fazer referência a endereços de memória principal de nosso computador e utilizamos vetores como forma de armazenamento estático nas nossas listas. Podemos afirmar que: 
Uma variável do tipo ponteiro poderá ser tratada como vetor e vice-versa. 
Baseado na declaração do seguinte registro: 
struct teste{ 
char coisa[50]; 
int numero; 
}; 
Qual das opções cria respectivamente uma variável e um vetor de 30 posições para o registro declarado de forma 
correta: 
struct teste variavel, vetor[30];
 
Na manipulação de dados em uma lista de um determinado sistema, onde cada nó desta lista possui um conjunto de dados e um ponteiro indicando onde será encontrado o próximo nó, gerado durante a execução do programa, caracteriza uma lista: 
Dinâmica Seqüencial. 
Uma empresa precisou em um determinado momento fazer o cálculo do salário de um grupo de funcionários e para tal criou a função com o seguinte protótipo: 
float calc_salario(float salários[], int &qtd); 
Baseado neste protótipo é CORRETO dizer que a função: 
Recebe um endereço para um número inteiro; 
Sabe-se que um protótipo de uma função é o cabeçalho da função com ;(ponto-e-vírgula) ao final. E que nas funções a passagem de parâmetros se dá por valor ou por referência. Para o protótipo: void troca(float&,float&); pode-se dizer que: 
É um protótipo de função que recebe dois argumentos que são endereços que armazenam números reais, por passagem por referência. E a função não retorna nada para a função chamadora. 
 
Considerando um vetor de elementos do tipo 
struct professor { 
char nome[40]; 
char titulacao[30]; 
}; 
Assinale a opção correta que mostra o trecho que determina que Maricota Silva é Mestre em Computação. 
professor p; 
strcpy(p.nome, "Maricota Silva"); 
strcpy(p.titulacao, "Mestre em Computação.");
Dentre os algoritmos de pesquisa ou busca em vetores, os mais difundidos são: a busca sequencial e a busca binária. Leia as sentenças abaixo e marque a assinale a resposta correta: 
 I. Para um vetor que armazena de forma ordenada uma quantidade bastante considerável de dados, se considerarmos que o dado a ser procurado não encontra-se no vetor, o algoritmo da busca sequencial será mais rápido em chegar a esta conclusão, que o algoritmo da busca binária. 
II. O algoritmo da busca binária baseia-se no princípio da “divisão e conquista”, isto é, o espaço de busca é dividido em espaços menores de modo a simplificar a tarefa a ser realizada. 
III. Para um vetor que armazena de forma ordenada uma quantidade bastante considerável de dados, se considerarmos que o dado a ser procurado encontra-se entre as primeiras posições do vetor, o algoritmo da busca sequencial será mais rápido em encontrar o dado que o algoritmo da busca binária. 
IV. Quando é realizada uma busca em um vetor, normalmente não se tem ideia em que posição o dado a ser buscado se encontra no vetor, ou mesmo se o dado buscado não está no vetor. E sendo assim, no caso de vetores ordenados o algoritmo de busca binária é muito mais eficiente que o algoritmo de busca sequencial, na maioria dos casos. 
Apenas a I está errada. 
A definição de uma estrutura não cria nenhuma variável, para criar uma variável do tipo estrutura, deve-se incluir uma instrução de declaração de variável. E como outras variáveis na linguagem C++, as variáveis do tipo estrutura podem ser inicializadas logo após a sua criação.Marque a alternativa CORRETA para inicialização de uma variável do tipo Aluno, cuja a estrutura é apresentada a seguir: 
 
struct Aluno { 
int mat; 
float nota[3]; 
char nome[50]; 
}; 
Aluno Jose={201001,5.0,5.8,5.7,"Jose Gomes dos Santos"}; 
Os métodos de ordenação são muito utilizados para facilitar a recuperação posterior de itens ordenados. Existem vários métodos de ordenação, por esse motivo, assinale corretamente a alternativa que mostra o nome do método que utiliza a estratégia de ordenação por trocas de vizinhos e é considerado o método mais simples. Bolha 
Uma fila duplamente terminada, isto é, uma estrutura linear que permite inserir e remover de ambos os extremos chamada de: Deque. 
Um programador recebeu a tarefa de construir um programa que receba uma cadeia de caracteres e verifique se esta cadeia de caracteres é um PALÍNDROME, sabendo-se que um PALÍNDROME apresenta a mesma sequência de caracteres da esquerda pra direita, quanto da direita para esquerda, marque a opção que possui a estrutura de dados mais adequada a este programa. PilhaSequencial 
O resultado do concurso para o cargo de uma empresa está armazenado em um vetor, que contém em cada um de seus elementos o nome e a nota obtida pelo candidato. Deseja-se que este vetor seja ordenado pela nota, em ordem decrescente. Sendo o vetor pequeno (poucos elementos), o programador responsável por desenvolver este algoritmo, escolheu um método de ordenação que executa os seguintes passos: 
 Selecione candidato com maior nota entre todos e troque-o com o candidato que está na primeira posição do vetor; 
 Selecione o segundo maior e troque-o com o candidato que está na segunda posição; 
 Os passos descritos anteriormente são seguidos para a terceira nota, quarta nota e assim por diante até que reste apenas um candidato. 
O algoritmo utilizado pelo programador trata-se do método de ordenação denominado: 
Seleção 
As pilhas sequenciais são estruturas que guardam a ordem reversa dos dados nelas armazenados, e isto em muitas ocasiões é muito vantajoso. A operação usada para inserir um elemento X numa pilha é conhecida na literatura como PUSH (X). Para remover um elemento de uma pilha a operação é o POP( ). Assim estas duas funções devem implentar o algoritmo LIFO (Last In - First Out ) ou o último a entrar é o primeiro a sair. Sendo assim se aplicarmos as seguintes operações em uma PILHA vazia: 
 PUSH(10),PUSH(5),POP(),PUSH(7),POP(),PUSH(2),POP(),POP( ).
Quais valores restarão na pilha? Nenhum, a pilha estará vazia. 
 
 A declaração de variáveis na programação é o ato de reservar um espaço na memória para poder armazenar valores de um determinado tipo. Essas variáveis podem ser classificadas como variáveis locais e globais. Sendo assim, qual das situações abaixo representa melhor o conceito das variáveis globais. 
Ao modificar o valor da variável 'X' na função "modifica" seu valor modificado poderá ser apresentado em qualquer outra função do programa. 
Na estrutura de dados tipo pilha, há duas operações básicas para empilhamento e desempilhamento. Essas operações são conhecidas como: PUSH e POP
Com relação as listas lineares sequenciais: 
 I. Uma lista linear sequencial é um vetor em linguagens estruturadas, também chamado de array. 
II. Um elemento de uma lista linear sequencial pode ser acessado diretamente através de um índice. 
III. Uma lista linear sequencial pode ter elementos de um mesmo tipo, ou de tipos diferentes. 
Apenas as afirmações I e II estão corretas. 
 
Em uma lista linear simplesmente encadeada. 
Cada nó possui um só ponteiro que referencia o próximo nó da lista. 
Um apontador é uma variável que contém o endereço de outra variável. Apontadores são muito usados, em parte porque são, às vezes, a única forma de se expressar um processo de computação e, em parte, porque, normalmente, implicam um código mais compacto e eficiente que o obtido de outras formas. Considerando o uso apontadores nas linguagens procedurais atuais, julgue os itens que se seguem com E se for errado e C se for 
certo. 
(E) O uso de apontadores como argumentos de funções que realizem chamada por valor não permite alteração de eus conteúdos de memória na função. 
(C) Com apontadores, é possível criar funções que retornem estruturas de dados complexas. 
(E) Para recuperar o valor da variável apontada, basta que o apontador seja atribuído a uma variável de mesmo tipo. 
(C) Arranjos de apontadores podem ser usados em funções que recebam como argumentos um número variável da cadeias de caracteres. 
(E) Em geral, para que um arranjo seja percorrido por um ponteiro, para cada elemento do arranjo deve-se adicionar ao ponteiro o número de bytes que o elemento ocupa em memória. 
Em relação às estruturas de dados, é correto afirmar: 
Guardar endereço de memória em "nós", normalmente identificados por previous ou next, é uma característica presente nas listas duplamente encadeadas. 
 
Considere que os seguintes itens são inseridos, nesta ordem, em uma estrutura de dados: 3, 4, 7, 10, 1. Marque a alternativa correspondente ao segundo item a ser retirado caso essa estrutura de dados seja uma fila, lista e pilha, respectivamente. 
 4; impossível determinar; 10. 
Marque a afirmativa que represente uma separação. 
Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da necessidade.
As coleções de dados podem ser classificadas em estruturas lineares e estruturas não lineares. Nesse contexto, é correto afirmar que: 
Na tabela de Hash a chave é transformada num índice inteiro que é usado para acessar os dados. A chave pode ser um string, desde que haja uma função que transforme essa chave num inteiro. É uma estrutura linear.
Seja Q uma estrutura de dados do tipo fila, em que ENQUEUE(X) significa a adição do elemento X à Q e que DEQUEUE(), a retirada de um elemento. Q está inicialmente vazia e sofre a seguinte sequencia de operações: ENQUEUE(1), ENQUEUE(2), DEQUEUE(), ENQUEUE(3), ENQUEUE(4), DEQUEUE(), DEQUEUE(), ENQUEUE(5). 
 Ao final da sequencia, a soma dos elementos de que (Q) será? 9 
 
As funções em programação permitem que se possa realizar a modularização do código diminuindo assim sua complexidade. Analise a função abaixo e assinale alternativa que descreve corretamente o tipo de função: 
 int funcao (int x){ 
if(x == 0) 
return 0; 
else 
 funcao(x-1); 
} 
Recursiva 
O espaço necessário para a representação dos dados pode ser alocado à medida que se torne necessário, através da alocação dinâmica. Uma estrutura armazenada através de encadeamento apresenta seus nodos alocados em posições aleatórias na memória, e não lado a lado. Dessa forma, existem várias vantagens no uso de representar os dados por encadeamento. Marque a alternativa correta que apresenta estas vantagens. 
Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de componentes.
Considerando as definições de estruturas de dados e a declaração tipo nó :: reg (dado: inteiro; próximo: ref nó), na qual reg é um registro contendo os campos: dado, que guarda valores inteiros, e próximo, que guarda endereço de outro nó, assinale a opção correta: 
O algoritmo para inclusão de elementos em uma pilha é usado sem nenhuma alteração para incluir elementos em uma lista. 
Em algumas situações, principalmente na utilização de listas, há a necessidade de posicionar o ponteiro em determinado local da lista. Dessa forma, analisando o trecho de código abaixo, que mostra uma função, assinale a alternativa correta que descreve o objetivo desta. Sabe-se que o sinal de asterisco (*) sinaliza um ponteiro. 
void funcao (Nodo **P){ 
 if ( *P != NULL ){ 
 while ( (*P) -> Anterior != NULL ) 
 *P= (*P) -> Anterior; 
 } 
} 
Posicionar o ponteiro no início da lista 
 
Respeitando as ordens de inserção e de retirada dos dados, uma estrutura de: 
pilha é também denominada LIFO ou FILO. 
 
Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para: 
frente e para tras, apenas. 
 
Qual o valor de a após a execução do trecho abaixo? 
int a = 10; 
int *x; 
x = &a; 
*x = 55; 
 55 
Uma lista simplesmente encadeada pode ser transformada em uma lista duplamente encadeada em tempo O(1) PORQUE, para transformar uma lista simplesmente encadeada em duplamente encadeada basta fazer uma cópia invertida de cada ponteiro (o destino do novo ponteiro passa a ser a origem do ponteiro original e vice-versa) e existe um número constante e limitado de cópias a fazer. Analisando as afirmações acima, conclui-se que: 
as duas afirmações são falsas. 
Marque a alternativa que completa a definição. 
(III) O container do tipo _____utiliza a ordenação Last in First Out (LIFO). Pilha 
(II) O container do tipo _____utiliza a ordenação First in First Out (FIFO). Fila 
(IV) O container _____a ordenação utilizada não importa, uma vez que a recuperação dos dados é feita pela posição 
 do mesmo. Tabela 
(I) O container do tipo _____permite acesso aos dados armazenados pelo seuconteúdo. Dicionário 
I= dicionário, II= fila, III= pilha e IV= tabela. 
O que acontece quando tentamos retirar um elemento de uma pilha que já está vazia? 
Underflow. 
 
Qual das seguintes estruturas de dados é classificada como heterogênea? Registro
Na criação de uma função precisamos definir suas partes, sendo algumas obrigatórias e outras 
alternativas, na linguagem C temos: 
tipo nome ( tipo1 parâmetro1, tipo2 parâmetro2, ..., tipon parâmetroN) { corpo da função } 
Das opções apresentadas marque a que apresenta apenas partes obrigatórias de se digitar de forma que a função execute alguma tarefa, sem levar em consideração os símbolos (chaves, parêntese, etc). 
 Nome, Tipo e Corpo da função 
 
Geralmente em algumas situações é necessário fazer a desalocação do espaço utilizado na memória. Porém, isso depende de como a reserva de uma quantidade de espaço de memória é feita, pois em alguns casos, o próprio compilador faz a desalocação. Quando o compilador não faz esta desalocação a memória foi reservada utilizando______. 
Alocação dinâmica de memória 
 
Em relação as estruturas de dados, aquela que corresponde ao armazenamento em uma lista linear com a posição relativa (não contígua) na memória de dois nós consecutivos da lista é conhecida por alocação: Encadeada. 
Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada". 
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. 
As coleções de dados podem ser classificadas em estruturas lineares e estruturas não lineares. Nesse contexto, é correto afirmar que: 
na tabela de Hash a chave é transformada num índice inteiro que é usado para acessar os dados. A chave pode ser um string, desde que haja uma função que transforme essa chave num inteiro. É uma estrutura linear.
 As listas encadeadas podem ser elaboradas de duas formas utilizando uma técnica de encadeamento simplesmente ou encadeamento duplo. O que difere uma lista simplesmente encadeada de uma lista duplamente encadeada? 
Em uma lista simplesmente encadeada cada nó aponta para um único nó enquanto a lista duplamente encadeada aponta para mais de um nó. 
 
Marque a afirmativa correta para a "Ordenação em Listas Lineares Sequenciais". 
É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente 
Os membros de uma estrutura são, normalmente, formados de tipos de dados nativos do 
C++, entretanto um membro de uma estrutura pode ser uma outra estrutura. Assim, seja a 
estrutura definida da seguinte forma: 
structveiculo { 
float valor; 
charplaca[7]; 
structlocador{ 
char nome[50]; 
int idade; 
}; 
}; 
 Marque a única alternativa CORRETA de atribuição de valor a um membro da variável definida como: veiculo carro; 
carro.locador.idade=21; 
 
O protótipo da função que permitirá calcular o produto (multiplicação) entre dois números 
inteiros de acordo com o trecho da chamada : 
 cout << “Produto = “ << multiplicar(a,b); 
int multiplicar(int, int); 
 
Baseado na declaração do seguinte registro: 
struct teste{ 
char coisa[50]; 
int numero; 
}; 
Qual das opções cria respectivamente uma variável e um vetor de 30 posições para o registro 
declarado de forma correta: 
struct teste variavel, vetor[30]; 
 
Pilha é uma estrutura de dados. 
Cujo acesso aos seus elementos segue a lógica LIFO. 
No contexto de estrutura de dados, uma pilha é: 
um tipo de lista linear em que as operações de inserção e remoção são realizadas na extremidade denominada topo. 
Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades. 
Se o item for igual ao item que está na metade do vetor, o item foi encontrado. 
 
As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma determinada aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como requisitos principais o acesso aleatório aos dados e alocação destes de forma contínua na memória. 
 Lista Sequencial 
Seja uma lista encadeada cujos nodos são formados pelo seguinte tipo de dado: 
struct empregado{ 
 long int matricula; 
 float salario; 
 empregado *proximo; 
}; 
Suponha que o ponteiro pont tenha o endereço de um nodo da lista, o qual se deseja atribuir um novo valor para o 
campo salario. Marque a alternativa que corretamente altera o valor do campo salario para 5000.00. 
salario=5000.00; 
São métodos ou algoritmos conhecidos de ordenação de dados por troca: 
Bubble sort e quicksort 
Um aluno, sempre que tinha um tempo sobrando, estudava o conteúdo da disciplina de Estrutura de Dados. Ao pesquisar sobre as funções usadas por Pilhas e Filas dinâmicas, percebeu que existe uma função que tanta pode ser usada com Pilha quanto por Fila. 
 Assinale a alternativa onde se encontra a finalidade dessa função. 
Exibir um elemento 
Em uma aplicação se pode utilizar a “ordenação”? 
Busca, Par mais próximo, Unicidade de elementos, Distribu ição de frequência, Seleção e Casco convexo. 
Complete os espaços na afirmativa e assinale a alternativa que apresenta as respostas corretas: O escalonamento_________ é do tipo________, em que o processo que chega primeiro na fila de pronto é o escolhido para ser executado. 
FIFO, Não preemptivo.

Outros materiais