Estrutura de Dados (C++) - 60 Questoes
Estrutura de Dados (C++) - 60 Questoes
Estrutura de Dados (C++) - 60 Questoes
Usa-se um vetor para se implementar uma fila sequencial, entretanto se nesta estrutura
ocorrer diversas operações de remoção e inserção podemos afirmar que:
(Ref.: 201407657644)
Usa-se um vetor para se implementar uma fila sequencial, entretanto se nesta estrutura
ocorrer diversas operações de remoção e inserção podemos afirmar que:
[ ] A estrutra sofrerá do fenômeno chamado esgotamento de memória e logo não poderá mais
ser utilizada. A solução é o uso da fila circular.
[ ] A estrutra sofrerá do fenômeno esgotamento de memória, mas se os dados estiverem
ordenados isto não afetará a estrutura.
[ ] Um vetor é uma estrutura base correta para esta implementação, já que está imune a
fenômenos como esgotamento de memória.
[ ] Um vetor não pode ser usado na implementação de uma fila sequencial apenas em pilhas
sequenciais.
[ ] A estrutura fila não sofre esgotamento de memória, isto ocorre com as pilhas já que
implementam o algoritmo LIFO.
(Ref.: 201407043582)
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)
[]5
[ ] 15
[]9
[]0
[]6
(Ref.: 201407044078)
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
[ ] Pilha
[ ] Matriz
[ ] Struct
[ ] Bolha
(Ref.: 201407281943)
Tei Ping, estudante de computação, precisou implementar parte de um jogo que trabalhava
com cartas especiais. Cada carta possui um número e uma letra. Alguns jogadores teriam que
jogar as cartas na mesa, enquanto outros deveriam devolver as cartas na sequência inversa à
jogada. Tei Ping estudou o mecanismo do jogo e decidiu usar a melhor estrutura de dados na
sua implementação. Qual a estrutura escolhida ?
[ ] lista
[ ] pilha
[ ] fila
[ ] grafo
[ ] árvore
(Ref.: 201407035637)
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.
[ ] um tipo de lista linear em que as operações de inserção e remoção são realizadas
aleatoriamente.
[ ] uma lista do tipo LILO.
[ ] uma lista do tipo FIFO.
[ ] um tipo de lista linear em que as operações de inserção são realizadas em uma extremidade
e as operações de remoção são realizadas em outra extremidade.
(Ref.: 201407035626)
A técnica LIFO (last in first out), utilizada em programação estruturada, é fundamentada no
conceito de:
[ ] loop
[ ] ponteiro
[ ] fila
[ ] pilha
[ ] array
(Ref.: 201407283937)
Pilhas são estruturas de dados que se utilizam do algoritmo LIFO, last in first out, ou melhor, o
último a entrar é o primeiro a sair. Desta forma pode-se abstrair que existe apenas um local
para a saída e a entrada de dados, ou seja o topo da pilha.
Supondo que uma pilha seja implementada por um vetor de inteiros de tamanho 10 e que
exista uma variável global chamada topo para indexar esta posição de entrada e saída de
dados e ainda quando esta variável assume o valor -1 indica que a pilha está vazia. Marque a
opção que melhor ilustra a função de exclusão de um dado do vetor pilha, supondo ainda que
o vetor tenha sido declarado inicialmente de forma global.
[ ] void pop(){ if(topo != -1) topo--;}
[ ] void pop(){ if(topo != -1) topo++;}
[ ] void pop(){ if(pilha != -1) pilha[topo];}
[ ] void pop(){ if(pilha != -1) pilha[topo-1];}
[ ] void pop(){ if(topo != -1) pilha[topo-1];}
(Ref.: 201407111205)
A técnica LIFO, utilizada em programação estruturada, é fundamentada no conceito de:
[ ] Array.
[ ] Ponteiro.
[ ] Fila.
[ ] Pilha.
[ ] Loop.
(Ref.: 201407044080)
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 é:
[ ] Matriz
[ ] Fila
[ ] Ponteiro
[ ] Pilha
[ ] Struct
(Ref.: 201407249027)
(Ref.: 201407666464)
Assumindo que estamos com uma estrutura de dados do tipo FIFO, as operações abaixo vão
resultar em que elementos na mesma: PUSH(2), PUSH(3), PUSH(4), POP(), POP(), PUSH(5),
PUSH(7), POP()
[]345
[]247
[]57
[]25
[]234
(Ref.: 201407666470)
Sobre uma estrutura de dados do tipo LIFO, observe as seguintes afirmações:
(1) É uma pilha.
(2) Pode ser uma fila com prioridades
(3) É uma estrutura onde o primeiro elemento a entrar é o último a sair.
Sobre estas afirmações marque a opção correta:
[ ] Apenas as afirmações (1) e (3) são verdadeiras
[ ] Todas as afirmações são falsas
[ ] Apenas a afirmação (1) é verdadeira
[ ] Apenas a afirmação (3) é verdadeira
[ ] Todas as afirmações são verdadeiras
(Ref.: 201407749872)
struct nodo
{
int info;
struct nodo *prox;
};
(Ref.: 201407715681)
Para converter de decimal para binário usamos a estrutura de dados pilha. Assinale a opção
que, corretamente, indica as ações corretas para empilhar o resto da divisão gerado no
processo de conversão, considerando uma lista simplesmente encadeada. Considere o tipo
definido abaixo :
struct no {
int dado;
struct no *link;
};
[ ] Basta alocar memória com new, armazenar o resto da divisão do número por 2 no campo
dado do novo nó e aterrar o link do novo nó.
[ ] Basta alocar memória com new e armazenar o resto da divisão do número por 2 no campo
dado do novo nó .
[ ] É preciso armazenar o resto da divisão do número por 2 no campo dado do primeiro nó da
lista e retornar o ponteiro para este nó.
[ ] Não é necessário alocar memória com new. Basta criar uma struct do tipo no, armazenar o
resto da divisão número por 2 no campo dado e aterrar o campo link.
[ ] É preciso alocar memória com new, armazenar o resto da divisão do número por 2 no
campo dado do novo nó, apontar o link do novo nó para o início da lista e enfim, retornar o
ponteiro para o novo nó.
(Ref.: 201407715559)
Sabendo que uma fila encadeada possui seus nós definidos pela :
struct no {
int x;
no *prox;
};
(Ref.: 201407044076)
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
[ ] Variável
[ ] Função
[ ] Matriz
[ ] Registro
(Ref.: 201407044097)
Analisando o trecho do algoritmo abaixo, pode-se afirmar que se trata de uma operação de:
[ ] Exibição de um elemento em uma estrutura LIFO
[ ] Remoção de um elemento de uma estrutura FIFO
[ ] Inserção de um elemento em uma estrutura FIFO
[ ] Remoção de um elemento de uma estrutura LIFO
[ ] Inserção de um elemento em uma estrutura LIFO
(Ref.: 201407043553)
O que acontece ao se inserir uma informação quando já usamos toda a área disponível do
vetor (topo = fim)?
[ ] underflow
[ ] overflow
[ ] ordenação
[ ] remoção
[ ] inclusão
(Ref.: 201407043933)
Com relação as listas lineares sequenciais:
(Ref.: 201407691619)
Considere uma lista com n livros, em que cada livro é modelado pela struct :
struct Livro {
string titulo, editora, autor;
float preco;
};
A função X abaixo
implementa a operação de :
[ ] Ordenação por inserção
[ ] Inserção
[ ] Inicialização
[ ] Busca
[ ] Substituição
(Ref.: 201407246350)
(Ref.: 201407047142)
Existem vários algoritmos de busca em estruturas de dados, um destes realiza a busca em
vetores, e requer acesso aleatório aos elementos desta estrutura e parte do pressuposto de
que os dados do vetor estejam ordenados e utiliza a técnica de divisão e conquista
comparando o elemento desejado com o elemento do meio do vetor. Esta técnica ainda
verifica se o elemento do meio do vetor for o desejado, a busca termina. Caso contrário, se o
elemento do meio vier antes do elemento buscado, então a busca continua na metade
posterior do vetor. E se o elemento do meio vier depois da chave, a busca continua na metade
anterior do vetor. O algoritmo que utiliza esta metodologia é:
[ ] Inserção
[ ] Bolha
[ ] Seleção
[ ] Pesquisa binária
[ ] Pesquisa sequencial
(Ref.: 201407043737)
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.
[ ] A ordenação é a base na qual, muitos programas são construídos. Entendendo a ordenação,
tem-se conhecimento para manter outros problemas.
[ ] A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação,
tem-se conhecimento para manter outros problemas.
[ ] A ordenação é a base na qual, muitos sistemas são construídos. Entendendo a ordenação,
tem-se conhecimento para manter outros problemas.
[ ] A ordenação é a base na qual, muitos sistemas são construídos. Entendendo a ordenação,
tem-se conhecimento para resolver outros problemas.
(Ref.: 201407632373)
(Ref.: 201407774187)
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:
[]9e9
[ ] 9 e 10
[ ] 10 e 1024
[ ] 1024 e 512
[ ] 10 e 10
(Ref.: 201407044082)
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.
[ ] Inserção
[ ] Binária
[ ] Bolha
[ ] Seleção
[ ] Hash
(Ref.: 201407632377)
inicio=0;
fim= tamanho - 1;
meio=(inicio+fim)/2;
while(procura != nomeVetor[meio] && inicio != fim)
{
if(procura > nomeVetor[meio])
inicio=meio+1;
else
fim=meio;
meio=(inicio+fim)/2;
}
if(nomeVetor[meio]==procura)
cout<<"\n....: "< < outroVetor[meio]<else
cout<<"\nDado nao encontrado\n";
(Ref.: 201407657635)
Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos,
geralmente, agrupados sob uma lógica e associados por um nome.
Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a
definição de uma estrutura como:
struct aluno {
string nome;
float nota;
};
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo primeiro
elemento deste vetor.
[ ] aluno.vet[10]=5.7;
[ ] vet[10].aluno.nota=5.7 ;
[ ] vet[10]=aluno.5.7;
[ ] vet[10].nota=5.7;
[ ] aluno.vet[10].nota=5.7;
(Ref.: 201407044077)
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 seta nome do campo
[ ] Nome da estrutura ponto tipo do campo
[ ] Nome da estrutura ponto nome do campo
[ ] Nome da estrutura seta tipo do campo
[ ] Nome da estrutura vírgula tipo do campo
(Ref.: 201407248785)
(Ref.: 201407683424)
Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a
definição de uma estrutura como:
struct aluno {
string nome;
float nota;
};
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo primeiro
elemento deste vetor.
[ ] vet[10].nota=5.7;
[ ] aluno.vet[10].nota=5.7;
[ ] vet[10].aluno.nota=5.7 ;
[ ] aluno.vet[10]=5.7;
[ ] vet[10]=aluno.5.7;
(Ref.: 201407715674)
Marque a opção correta, considerando
struct Livro {
int codigo;
float preco;
} liv;
[ ] Livro.liv.codigo = 12345;
[ ] Livro->liv.codigo = 12345;
[ ] Livro.codigo = 12345;
[ ] liv.preco = 30.70;
[ ] liv->preco = 30.70;
(Ref.: 201407043570)
Qual das seguintes estruturas de dados é classificada como heterogênea?
[ ] Vetor
[ ] Pilha
[ ] Loop
[ ] Fila
[ ] Registro
(Ref.: 201407632383)
Blocos únicos de códigos que realizam diversas tarefas distitintas são de dificil manutenção.
Portanto, utiliza-se a tecnica da modularização de programas, a fim de facilitar a
implementação e a manutenção dos programas. Esta técnica, também chamada de
modularização, tem como principal elemento:
[ ]Os Grafos
[ ]As Filas
[ ]Os Vetores
[ ]As funções
[ ]As Estruturas de Dados
(Ref.: 201407625796)
Considere a função:
void dobro(int x) {
x = 10 * x;
}
Qual será o valor impresso na tela quando o programa principal for executado?
int main() {
int n;
n = 5;
dobro(n);
cout << n;
return 0;
[ ]5
[ ]50
[ ]Haverá um erro de compilação
[ ]10
[ ]0
(Ref.: 201407626502)
Uma função possui um valor de retorno inteiro, recebe por valor um inteiro como primeiro
parâmetro e por referência um inteiro como segundo parâmetro. Qual das respostas abaixo
poderia representar o protótipo dessa função:
[ ]void func (int a, int &b);
[ ]int func (int a, int &b);
[ ]void func (int &a, int &b);
[ ]int func (int &a, int b);
[ ]int func (&int, int);
(Ref.: 201407607900)
Na passagem por ____________________ , o endereço da variável da função chamadora é
passado para a função chamada e, dessa forma, o valor poderá ser alterado, ou não.
[ ]void
[ ]caracter
[ ]valor
[ ]referência
[ ]número
(Ref.: 201407283890)
#include <iostream>
using namespace std;
float n1,n2,n3,med;
float media(float, float, float);
void entrada();
void saida();
int main()
{
entrada();
saida();
return 0;
}
float media(float a, float b, float c){
return (a+b+c)/3;
}
void entrada()
{
cout << "Entre com a 1a nota: ";
cin >> n1;
cout << "Entre com a 2a nota: ";
cin >> n2;
cout << "Entre com a 3a nota: ";
cin >> n3;
}
void saida(){
cout << "A media: " << media(n1,n2,n3);
}
[ ]O programa não executa corretamente, pois os protótipos estão fora da ordem em que as
funções são descritas.
[ ]O programa não executa corretamente, pois o protótipo da função media( ) não apresenta a
identificação dos parâmetros, mas apenas os tipos dos mesmos.
[ ]O programa executa perfeitamente independente da ordem das funções já que existem os
seus protótipos.
[ ]O programa executa perfeitamente, mas não mostra o valor da media já que esta função não
foi chamada na função main( ).
Errado [ ]O programa não executa corretamente pois as funções devem ser descritas antes da
função main(), para que o compilador consiga reconhecê-las.
(Ref.: 201407246340)
Funções são instrumentos de modularização de programas, que tem como finalidade tornar o
código mais legível, isto é mais fácil de entender, evita replicação de instruções e permite o
reuso das funções em outros programas. Então considere o seguinte código:
int main( )
{
float a=10.0;
float b=4.0;
return 0;
(Ref.: 201407111206)
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.
(Ref.: 201407721047)
Observe o trecho do programa em C++ abaixo e, após, entrar com os valores sugeridos para
sua execução assinale a alternativa que representa a resposta final.
cin >> a;
cin >> b;
cin >> c;
cin >> d;
cout << a;
cout << b;
cout << c;
cout << d;
cout << d;
cout << c;
cout << b;
cout << a;
Após a impressão dos valores pela ordem teremos uma pilha e uma fila.
Após a impressão dos valores pela ordem teremos uma fila e um grafo.
Certo Após a impressão dos valores pela ordem teremos uma fila e uma pilha.
Após a impressão dos valores pela ordem teremos duas filas.
Após a impressão dos valores pela ordem teremos duas pilhas.
(Ref.: 201407632385)
Qual estrutura de dados não linear que é utilizada na implementação de Redes de
Computadores, na Computação Gráfica, em modelagem de circuitos digitais e etc. E que se
caracteriza por apresentar um conjunto de nós e conexões entre eles.
Filas Encadeadas
Listas Encadeadas.
Pilhas Encadeadas
Vetores
Certo Grafos
(Ref.: 201407044093)
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.
Proteção de memória, transferência de dados, estruturas simples.
Certo Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de
componentes.
Acesso, representação, compartilhamento de memória.
Transferência de dados, gerenciamento de memória e procedimentos menos intuitivos.
Previsão de espaço físico, estruturas complexas, procedimentos menos intuitivos.
(Ref.: 201407632385)
Qual estrutura de dados não linear que é utilizada na implementação de Redes de
Computadores, na Computação Gráfica, em modelagem de circuitos digitais e etc. E que se
caracteriza por apresentar um conjunto de nós e conexões entre eles.
[ ] Listas Encadeadas.
[ ] Grafos
[ ] Vetores
[ ] Filas Encadeadas
[ ] Pilhas Encadeadas
(Ref.: 201407035622)
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 de distribuição e organização de dados em uma rede de computador de modo
que possam ser usados de modo eficiente.
[ ] É um modo de deleção de dados em um computador.
[ ] É um modo particular de armazenamento e organização de dados em um computador de
modo que possam ser usados de modo eficiente.
[ ] É um modo de utilização de dados nos programas de computador.
[ ] São os nomes dados as variáveis na montagem de uma rotina.
(Ref.: 201407248755)
Considere o trecho do programa em c++
void misterio(int& v) {
int aux = 111;
int main() {
int valor = 1000;
misterio(valor);
cout << “Numero 1 = “ << valor << “ Numero 2 = “ << numero << endl;
}
[ ] Auxiliar = 111 Numero1 = 1000 Numero2 = 80
[ ] Auxiliar = 100 Numero1 = 900 Numero2 = 20
Auxiliar = 100 Numero1 = 900 Numero2 = 80
[ ] Auxiliar = 101 Numero1 = 900 Numero2 = 20
[ ] Auxiliar = 100 Numero1 = 1000 Numero2 = 20
(Ref.: 201407246340)
Funções são instrumentos de modularização de programas, que tem como finalidade tornar o
código mais legível, isto é mais fácil de entender, evita replicação de instruções e permite o
reuso das funções em outros programas. Então considere o seguinte código:
int main( )
{
float a=10.0;
float b=4.0;
cout < < media(a,b);
return 0;
}
float media(float x, float y) { return (x+y)/2;}
(Ref.: 201407613946)
Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos,
geralmente, agrupados sob uma lógica e associados por um nome. Esses elementos podem ser
variáveis simples, matrizes ou ainda outras estruturas. Seja a definição de uma estrutura
como: struct aluno { string nome; float media; }; Suponha ainda que exista um vetor desta
estrutura, definido como: aluno vet [ 10]; Marque a alternativa em que é atribuída de forma
correta a media 6.0 para o quarto elemento deste vetor.
[ ] vet[3].media=6.0;
[ ] vet[3].aluno=6.0;
[ ] aluno[10]=6.0;
[ ] aluno[3].10=6.0;
[ ] aluno[3].media=6.0;
(Ref.: 201407248785)
Com relação à struct, é correto afirmar que :
[]
Cada elemento da struct é chamado campo e cada campo deve ser, obrigatoriamente, de um
tipo de dados distinto de outro campo.
[]
A struct é sempre definida dentro da main.
[]
Cada elemento da struct é chamado componente.
[]
Cada elemento da struct é denominado membro ou campo, sendo que a struct pode
armazenar elementos de tipos diferentes ou não.
[]
Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados do mesmo
tipo.
(Ref.: 201407047142)
Existem vários algoritmos de busca em estruturas de dados, um destes realiza a busca em
vetores, e requer acesso aleatório aos elementos desta estrutura e parte do pressuposto de
que os dados do vetor estejam ordenados e utiliza a técnica de divisão e conquista
comparando o elemento desejado com o elemento do meio do vetor. Esta técnica ainda
verifica se o elemento do meio do vetor for o desejado, a busca termina. Caso contrário, se o
elemento do meio vier antes do elemento buscado, então a busca continua na metade
posterior do vetor. E se o elemento do meio vier depois da chave, a busca continua na metade
anterior do vetor. O algoritmo que utiliza esta metodologia é:
[ ] Pesquisa binária
[ ] Inserção
[ ] Pesquisa sequencial
[ ] Seleção
[ ] Bolha
(Ref.: 201407246347)
Entre os diversos algoritmos de pesquisa existentes, certamente 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é achar 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.
[]5e5
[]7e1
[]6e4
[]6e2
[]6e1
(Ref.: 201407035643)
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 LIFO de organização de dados.
[ ] o sistema I, adota o esquema LIFO de organização de dados e o II, o esquema LIFO.
[ ] tanto o sistema I, quanto o II, adotam o esquema vetor de organização de dados.
[ ] o sistema I, adota o esquema LIFO de organização de dados e o II, o esquema FIFO.
[ ] tanto o sistema I, quanto o II, adotam o esquema FIFO de organização de dados.
(Ref.: 201407043553)
O que acontece ao se inserir uma informação quando já usamos toda a área disponível do
vetor (topo = fim)?
[ ] overflow
[ ] underflow
[ ] ordenação
[ ] remoção
[ ] inclusão
(Ref.: 201407044093)
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.
[ ] Acesso, representação, compartilhamento de memória.
[ ] Previsão de espaço físico, estruturas complexas, procedimentos menos intuitivos.
[ ] Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de
componentes.
[ ] Transferência de dados, gerenciamento de memória e procedimentos menos intuitivos.
[ ] Proteção de memória, transferência de dados, estruturas simples.
(Ref.: 201407035622)
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:
[ ] São os nomes dados as variáveis na montagem de uma rotina.
[ ] É um modo particular de armazenamento e organização de dados em um computador de
modo que possam ser usados de modo eficiente.
[ ] É um modo de distribuição e organização de dados em uma rede de computador de modo
que possam ser usados de modo eficiente.
[ ] É um modo de deleção de dados em um computador.
[ ] É um modo de utilização de dados nos programas de computador.
(Ref.: 201407657630)
Blocos únicos de códigos que realizam diversas tarefas distintas são de difícil manutenção.
Portanto, utiliza-se a técnica da modularização de programas, a fim de facilitar a
implementação e a manutenção dos programas. Esta técnica tem como principal elemento:
[ ] As funções
[ ] Os Grafos
[ ] Os Vetores
[ ] As Estruturas de Dados
[ ] As Filas
(Ref.: 201407044106)
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.
(Ref.: 201407044077)
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
[ ] Nome da estrutura seta tipo do campo
[ ] Nome da estrutura ponto tipo do campo
[ ] Nome da estrutura seta nome do campo
[ ] Nome da estrutura vírgula tipo do campo
struct aluno {
string nome;
float nota;
};
Suponha ainda que exista um vetor desta estrutura, definido como:
aluno vet [ 100];
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo primeiro
elemento deste vetor.
[ ] aluno.vet[10].nota=5.7;
[ ] vet[10].nota=5.7;
[ ] vet[10].aluno.nota=5.7 ;
[ ] vet[10]=aluno.5.7;
[ ] aluno.vet[10]=5.7;
(Ref.: 201407632376)
Sabendo-se que o método de seleção também é um método de ordenação que baseia seu
algoritmo em trocas entre os elementos de um vetor, se submetermos a sequencia de inteiros
armazenada em um vetor inicialmente na seguinte ordem : 13, 23, 3, 8, 1. Pode-se dizer que
quando o menor elemento do vetor alcançar sua posição final, a ordenação apresentada no
vetor é:
[ ] 1,8,3,23,13
[ ] 1,23,13,8,3
[ ] 1,23,3,8,13
[ ] 1,3,23,8,13
[ ] 1,13,23,8,3
(Ref.: 201407043991)
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[i-1]> v[i]; i--) {
aux = v[i-1];
v[i-1] = v[i];
v[i] = aux;
}
}
...
Assinale o método ao qual o trecho de algoritmo pertence.
[ ] Inserção
[ ] Heapsort
[ ] Seleção
[ ] Bolha
[ ] Quicksort
(Ref.: 201407044076)
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
[ ] Matriz
[ ] Função
[ ] Variável
[ ] Registro
(Ref.: 201407607800)
__________________________ é uma lista linear em que a alocação de memória pode ser
estática, e que a forma de armazenamento é contígua ou sequencial na memória. Usamos este
tipo de lista quando se tem em mente um tamanho pré-definido, ou seja, quando se sabe até
onde a lista pode crescer.
[ ] Lista Linear Não Alocada
[ ] Lista Linear Sequencial
[ ] Lista Linear Não Sequencial
[ ] Lista Não Linear
[ ] Lista Linear de Alocação de Memória
(Ref.: 201407582158)
Leia com atenção as afirmativas abaixo e assinale a resposta correta.
(Ref.: 201407715556)
A que estrutura pertence a definição: " Uma estrutura não linear que é um conjunto de nós e
suas conexões entre eles e não há limitação de vértices. Muito utilizada para representação de
percursos em mapas."
[ ] structs
[ ] filas encadeadas
[ ] listas encadeadas
[ ] pilhas encadeadas
[ ] grafos
(Ref.: 201407044110)
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.
[ ] Em duas funções diferentes temos duas variáveis também diferentes com o mesmo nome
apresentando o mesmo valor.
[ ] Em uma função "resul" tem-se uma variável ali declarada por 'T' que recebe o valor inteiro
5. Ao tentar chamar esta variável em outra função é mencionado um warning.
[ ] Se modificarmos o valor da variável 'Y' na função "soma", e depois imprimirmos na tela esta
variável em outra função, onde tambem está declarada a variável 'Y', será acusado um erro de
compilação.
[ ] 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.
[ ] Se dentro de uma função "mostra" declararmos uma variável 'R' com um determinado valor
poderemos imprimir esta variável em qualquer outra função do programa mostrando o valor
atribuído na função "mostra".
(Ref.: 201407625796)
Considere a função:
void dobro(int x) {
x = 10 * x;
Qual será o valor impresso na tela quando o programa principal for executado?
int main() {
int n;
n = 5;
dobro(n);
cout << n;
return 0;
[]5
[ ] Haverá um erro de compilação
[]0
[ ] 50
[ ] 10
(Ref.: 201407043753)
Em uma lista linear duplamente encadeada.
[ ] Cada nó possui um só ponteiro que referencia o próximo nó da lista.
[ ] O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da
lista, formando um ciclo.
[ ] Além do campo relativo ao dado, cada nó possui dois ponteiros.
[ ] Cada ponteiro possui um só endereço que referencia o primeiro nó da lista.
[ ] O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da
lista.
(Ref.: 201407043964)
Suponha uma listagem mantida com informações sobre um equipamento a ser adquirido por
uma empresa. A listagem possui as informações sobre de 10 fornecedores, descritas a seguir:
Sendo o fornecedor "Z" o quinto elemento desta listagem e "X" e "Y" dois outros fornecedores
que não pertencem à listagem, com seus respectivos ponteiros "pZ", "pX" e "pY", considere o
trecho de código abaixo.
pY->proximo = pX;
pX->anterior = pY;
pX->proximo = pZ->proximo;
pZ->proximo->anterior = pX;
pZ->proximo = pY;
pY->anterior = pZ;
(Ref.: 201407256631)
Observe a struct, definida globalmente, e um trecho de uma função que manipula uma Lista
Duplamente Encadeada.
struct listaDE
int info;
...
novo->info = valor;
novo->prox = LISTA;
novo->ant = NULL;
(Ref.: 201407246371)
Em uma lista duplamente encadeada, seus nodos são compostos por campos cujos tipos
podem ser de diferentes naturezas, entretanto dois de seus campos devem ser ponteiros para
o mesmo tipo do nodo, são estes os ponteiros ant e prox, que apontam respectivamente para
o nodo anterior e para o próximo nodo. Esta característica permite que a estrutura seja
percorrida em ambos os sentidos. Assim analisando as operações a seguir:
p->ant->prox=p->prox;
p->prox->ant=p->ant;
Sendo p um ponteiro que aponta para um dos nodos da lista, pode-se afirmar que:
(Ref.: 201407249049)
(Ref.: 201407691615)
struct nodupla {
int dado;
};
A opção que corretamente mostra as instruções para inserir um valor no início da lista
apontada por p é :
[]
nodupla *novo;
novo->dado = valor;
novo->dlink = p;
novo->elink = NULL;
p->elink = novo;
p = novo;
[]
nodupla *novo;
novo.dado = valor;
novo.dlink = p;
novo.elink = NULL;
if (p != NULL)
p.elink = novo;
p = novo;
[]
n
nodupla *novo;
novo->dado = valor;
novo->dlink = p;
if (p != NULL)
p->elink = novo;
p = novo;
[]
nodupla *novo;
novo->dado = valor;
novo->dlink = p;
novo->elink = NULL;
if (p != NULL)
p->elink = novo;
p = novo;
[]
n nodupla *novo;
novo->dado = valor;
novo->elink = NULL;
if (p != NULL)
p->elink = novo;
p = novo;
(Ref.: 201407044077)
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 tipo do campo
[ ] Nome da estrutura seta tipo do campo
[ ] Nome da estrutura ponto nome do campo
[ ] Nome da estrutura vírgula tipo do campo
[ ] Nome da estrutura seta nome do campo
(Ref.: 201407248785)
Com relação à struct, é correto afirmar que :
[]
Cada elemento da struct é chamado componente.
[]
Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados do mesmo
tipo.
[]
Cada elemento da struct é chamado campo e cada campo deve ser, obrigatoriamente, de um
tipo de dados distinto de outro campo.
[]
Cada elemento da struct é denominado membro ou campo, sendo que a struct pode
armazenar elementos de tipos diferentes ou não.
[]
A struct é sempre definida dentro da main.
(Ref.: 201407246347)
Entre os diversos algoritmos de pesquisa existentes, certamente 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é achar 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.
[]5e5
[]7e1
[]6e4
[]6e2
[]6e1
(Ref.: 201407044082)
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.
[ ] Inserção
[ ] Seleção
[ ] Binária
[ ] Bolha
[ ] Hash
(Ref.: 201407607800)
__________________________ é uma lista linear em que a alocação de memória pode ser
estática, e que a forma de armazenamento é contígua ou sequencial na memória. Usamos este
tipo de lista quando se tem em mente um tamanho pré-definido, ou seja, quando se sabe até
onde a lista pode crescer.
[ ] Lista Linear Sequencial
[ ] Lista Linear de Alocação de Memória
[ ] Lista Linear Não Alocada
[ ] Lista Não Linear
[ ] Lista Linear Não Sequencial
(Ref.: 201407043933)
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.
[ ] Apenas as afirmações I e III estão corretas.
[ ] Apenas a afirmação I está correta.
[ ] Apenas as afirmações II está corretas.
[ ] Apenas as afirmações II e III estão corretas.
(Ref.: 201407666479)
Em uma aplicação que usa processos de alocação estática e dinâmica de memória é correto
afirmar que
[ ] A memória utilizada pela aplicação é totalmente alocada após o inicio de sua execução
[ ] A memória utilizada pela aplicação é inicialmente estática, mas pode mudar
[ ] Todas as afirmações acima são incorretas
[ ] Apenas a memória associada às variáveis do tipo vetor é alocada após o inicio da execução
da aplicação
[ ] Toda a memória utilizada pela aplicação não muda durante toda a sua execução
(Ref.: 201407707069)
[ ] A primeira faz uma busca retornando o valor do nó ou NULL quando não encontrado, já a
segunda insere um novo nó no final da LSE;
[ ] A primeira faz uma busca retornando a posição do nó ou NULL quando não encontrado, já a
segunda insere um novo nó no inicio da LSE;
[ ] A primeira faz uma busca retornando o endereço do nó ou NULL quando não encontrado, já
a segunda insere um novo nó no inicio da LSE;
[ ] A primeira faz uma busca retornando o endereço do nó ou NULL quando não encontrado, já
a segunda insere um novo nó no final da LSE;
[ ] A primeira faz uma busca retornando o valor do nó ou NULL quando não encontrado, já a
segunda insere um novo nó no inicio da LSE;
(Ref.: 201407582655)
Numa Lista Encadeada, podemos afirmar que:
(Ref.: 201407044079)
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.
[ ] Uma estrutura utilizada apontar erros de operações.
[ ] Um objeto que armazena dado diretamente na memória.
[ ] Uma estrutura que aponta para um objeto de arquivo.
[ ] Um objeto que não contém endereço de memória.
(Ref.: 201407047148)
(Ref.: 201407043893)
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.
[ ] Organizar os dados da lista em ordem crescente ou decrescente.
[ ] Alterar a ordem dos dados da lista do final para o início, atualizando a lista.
[ ] Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista
resultante.
[ ] Intercalar a ordem dos dados da lista do final para o início, atualizando a lista.
RESPOSTAS DAS QUESTOES
(Ref.: 201407632385)
Grafos
(Ref.: 201407035622)
É um modo particular de armazenamento e organização de dados em um computador de
modo que possam ser usados de modo eficiente.
(Ref.: 201407248755)
Auxiliar = 100 Numero1 = 900 Numero2 = 80
(Ref.: 201407246340)
O código não compila, pois há necessidade de se declarar float media(float, float) como
protótipo da função float media(float x, float y)antes da função principal.
(Ref.: 201407613946)
vet[3].media=6.0;
(Ref.: 201407047142)
Pesquisa binária
(Ref.: 201407246347)
6e2
(Ref.: 201407035643)
tanto o sistema I, quanto o II, adotam o esquema FIFO de organização de dados.
(Ref.: 201407043553)
overflow
(Ref.: 201407044093)
Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de
componentes.
(Ref.: 201407035622)
É um modo particular de armazenamento e organização de dados em um computador de
modo que possam ser usados de modo eficiente.
(Ref.: 201407657630)
As funções
(Ref.: 201407044106)
Retorna a posição de v se o valor vl foi encontrado.
(Ref.: 201407044077)
Nome da estrutura ponto nome do campo
(Ref.: 201407683424)
vet[10].nota=5.7;
(Ref.: 201407632376)
1,23,3,8,13
(Ref.: 201407043991)
Inserção
(Ref.: 201407044076)
Vetor
(Ref.: 201407607800)
Lista Linear Sequencial
(Ref.: 201407582158)
I, III, IV e VI são afirmativas verdadeiras
(Ref.: 201407715556)
grafos
(Ref.: 201407044110)
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.
(Ref.: 201407625796)
5
(Ref.: 201407044077)
Nome da estrutura ponto nome do campo
(Ref.: 201407248785)
Cada elemento da struct é denominado membro ou campo, sendo que a struct pode
armazenar elementos de tipos diferentes ou não.
(Ref.: 201407047142)
Pesquisa binária
(Ref.: 201407246347)
6e2
(Ref.: 201407044082)
Bolha
(Ref.: 201407607800)
Lista Linear Sequencial
(Ref.: 201407043933)
Apenas as afirmações I e II estão corretas.
(Ref.: 201407111206)
I, II e III.
(Ref.: 201407715556)
grafos
(Ref.: 201407721047)
Após a impressão dos valores pela ordem teremos uma fila e uma pilha.
(Ref.: 201407632385)
Grafos
(Ref.: 201407044093)
Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de
componentes.
(Ref.: 201407246333)
As alternativas I e II estão corretas
(Ref.: 201407632383)
As funções
(Ref.: 201407625796)
5
(Ref.: 201407626502)
int func (int a, int &b);
(Ref.: 201407607900)
referência
(Ref.: 201407283890)
O programa executa perfeitamente independente da ordem das funções já que existem os
seus protótipos.
(Ref.: 201407246340)
O código não compila, pois há necessidade de se declarar float media(float, float) como
protótipo da função float media(float x, float y)antes da função principal.
(Ref.: 201407657635)
vet[10].nota=5.7;
(Ref.: 201407044077)
Nome da estrutura ponto nome do campo
(Ref.: 201407248785)
Cada elemento da struct é denominado membro ou campo, sendo que a struct pode
armazenar elementos de tipos diferentes ou não.
(Ref.: 201407683424)
vet[10].nota=5.7;
(Ref.: 201407715674)
liv.preco = 30.70;
(Ref.: 201407043570)
Registro
(Ref.: 201407047142)
Pesquisa binária
(Ref.: 201407043737)
A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação,
tem-se conhecimento para resolver outros problemas.
(Ref.: 201407632373)
Que utiliza o método inserção e realiza uma ordenação crescente nos elementos do vetor v.
(Ref.: 201407774187)
10 e 1024
(Ref.: 201407044082)
Bolha
(Ref.: 201407632377)
trata-se da implementação do algortimo de busca binária.
(Ref.: 201407044076)
Vetor
(Ref.: 201407044097)
Inserção de um elemento em uma estrutura LIFO
(Ref.: 201407043553)
overflow
(Ref.: 201407043933)
Apenas as afirmações I e II estão corretas.
(Ref.: 201407691619)
Inserção
(Ref.: 201407246350)
Lista Sequencial
(Ref.: 201407281943)
pilha
(Ref.: 201407035637)
um tipo de lista linear em que as operações de inserção e remoção são realizadas na
extremidade denominada topo.
(Ref.: 201407035626)
pilha
(Ref.: 201407283937)
void pop(){ if(topo != -1) topo--;}
(Ref.: 201407111205)
Pilha.
(Ref.: 201407044080)
Pilha
(Ref.: 201407044051)
Entrada de dados pelo final e saída pelo início.
(Ref.: 201407635013)
Fila de arquivos para impressão e buffer para gravação de dados em fila.
(Ref.: 201407632380)
A estrutra sofrerá do fenômeno chamado esgotamento de memória e logo não poderá mais
ser utilizada. A solução é o uso da fila circular.
(Ref.: 201407657644)
A estrutra sofrerá do fenômeno chamado esgotamento de memória e logo não poderá mais
ser utilizada. A solução é o uso da fila circular.
(Ref.: 201407043582)
9
(Ref.: 201407044078)
Fila
(Ref.: 201407043893)
Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista
resultante.
(Ref.: 201407047148)
Posicionar o ponteiro no início da lista
(Ref.: 201407044079)
Um objeto que contém um endereço de memória.
(Ref.: 201407582655)
II e IV estão corretas
(Ref.: 201407707069)
A primeira faz uma busca retornando o endereço do nó ou NULL quando não encontrado, já a
segunda insere um novo nó no inicio da LSE;
(Ref.: 201407666479)
A memória utilizada pela aplicação é inicialmente estática, mas pode mudar
(Ref.: 201407249027)
usa o critério LIFO e é implementada usando-se listas encadeadas.
(Ref.: 201407666464)
25
(Ref.: 201407666470)
Apenas as afirmações (1) e (3) são verdadeiras
(Ref.: 201407749872)
InsereNoFrente
(Ref.: 201407715681)
É preciso alocar memória com new, armazenar o resto da divisão do número por 2 no campo
dado do novo nó, apontar o link do novo nó para o início da lista e enfim, retornar o ponteiro
para o novo nó.
(Ref.: 201407715559)
no *p=new no;
(Ref.: 201407043753)
Além do campo relativo ao dado, cada nó possui dois ponteiros.
(Ref.: 201407043964)
X, antes do Z, e Y, logo após o Z.
(Ref.: 201407256631)
listaDE *insereInicio(listaDE *LISTA, int valor);
(Ref.: 201407246371)
As operações removem o nodo apontado pelo ponteiro p.
(Ref.: 201407249049)
A lista pode ser percorrida com igual facilidade para a direita ou para a esquerda, pois existem
dois ponteiros.
(Ref.: 201407691615)
nodupla *novo;
novo = new nodupla;
novo->dado = valor;
novo->dlink = p;
novo->elink = NULL;
if (p != NULL)
p->elink = novo;
p = novo;