Buscar

ESTRUTURAS DE DADOS EM C

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

ESTRUTURAS DE DADOS EM C 
1 - 
 
 
 
 
 
 
RESPOSTA: C. 
2 - 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: 
truct empregado { 
 string nome; 
 float salario; 
}; 
Suponha ainda que exista um vetor desta estrutura, definido como: 
empregado vet [ 100]; 
Marque a alternativa em que é atribuída de forma correta o salário 805.7 para o 
décimo primeiro elemento deste vetor. 
A- vet[10].empregado.salario=805.7 
B- vet[10]=empregado.805.7; 
C- vet[10].salario=805.7; 
D- empregado.vet[10]=805.7; 
E- empregado.vet[10].nota=805.7; 
 
RESPOSTA: C. 
 3 - Com relação à struct, é correto afirmar que: 
A- Cada elemento da struct é chamado campo e cada campo deve ser, 
obrigatoriamente, de um tipo de dados distinto de outro campo. 
B- Cada elemento da struct é denominado membro ou campo, sendo que a struct 
pode armazenar elementos de tipos diferentes ou não. 
C- Cada elemento da struct é chamado componente. 
D- Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados 
do mesmo tipo. 
E- A struct é sempre definida dentro da main. 
 
RESPOSTA: B. 
4 - Considere o código a seguir escrito na linguagem C. 
#include 
Int main() 
{ printf(¿Valor total: %.1f \n¿, 9,1415169265); 
return(0); 
} 
 
 
Assinale a alternativa que apresenta a saída correta. 
A- Valor total: 9.141517 
B- Valor total: 9.1 
C- Valor total: 9.142 
D- Valor total: 9.141517e+00 
E- Valor total: 9.14 
 
RESPOSTA: B. 
5 – Analise o seguinte código implementado na linguagem C: 
int soma(int *a, int *b) { 
 *a = *a + *b; 
 return *a; 
} 
int main() { 
int x=5, y=3; 
y = soma(&x, &y); 
 printf(¿%d¿, x+y); 
return(0); 
} 
Qual será o valor exibido na saída padrão do sistema? 
A- 11 
B- 8 
C- 13 
D- 24 
E- 16 
 
RESPOSTA: E. 
6 - Considere uma lista circular simplesmente encadeada com "n" elementos. Após "n- 
1" remoções realizadas no final da lista podemos afirmar que: 
A- O primeiro elemento estará apontando para si mesmo. 
B- A lista estará vazia. 
C- A lista restante não será mais uma lista circular. 
D- O primeiro elemento estará apontando para o nulo. 
E- A lista restante será duplamente encadeada. 
RESPOSTA: A. 
7 - Uma lista ordenada alocada sequencialmente possui como desvantagem: 
A- Complexidade O(n) para a busca. 
B- Tamanho limitado de memória. 
C- Impossibilidade de acesso direto. 
D- A reserva de memória em posições contíguas. 
E- Impossibilidade de remoção no meio da lista. 
 
RESPOSTA: D. 
8 - É correto afirmar que: 
A- O Selection Sort tem complexidade computacional O(n log n) 
B- O buble sort é um algoritmo de ordenação instável. 
C- O Insert sort é um método de ordenação instável. 
D- O buble sort é um algoritmo recursivo. 
E- O buble sort, o insert sort e o selection sort tem a mesma complexidade 
computacional, porém, isto não quer dizer que todos executem ao mesmo 
tempo para a mesma instância. 
 
RESPOSTA: E. 
9 - O método de ordenação por seleção tem duas versões, uma estável e outra 
instável.Em relação ao tempo de execução do algoritmo quando é apresentado em 
sua entrada uma sequência quase ordenada e sua complexidade computacional, é 
correto afirmar que: 
A- Tanto a versão estável quanto a instável executarão no mesmo tempo, isto se 
deve ao fato de que o desempenho para uma instância depende somente da 
complexidade computacional, que é igual para ambas versões. 
B- É provável que a versão estável execute em tempo inferior a versão instável, 
porém a complexidade computacional de ambos é O(n log n). 
C- É provável que a versão estável execute em tempo inferior a versão instável, 
porém a complexidade computacional de ambos é O(n log n). 
D- É provável que a versão estável execute em tempo inferior a versão instável, 
porém a complexidade computacional de ambos é O(n\(^2\)). 
E- É provável que a versão instável execute em tempo inferior a versão estável, 
porém a complexidade computacional de ambos é O(n\(^2\)). 
 
RESPOSTA: D. 
 
10 - Acerca das estruturas de dados Árvores, analise as afirmativas a seguir. 
I. A árvore AVL é uma árvore binária com uma condição de balanço, porém 
não completamente balanceada. 
II. Árvores admitem tratamento computacional eficiente quando 
comparadas às estruturas mais genéricas como os grafos. 
III. Em uma Árvore Binária de Busca, todas as chaves da subárvore esquerda 
são maiores que a chave da raiz. 
Assinale: 
A- Se somente as afirmativas I e II estiverem corretas. 
B- Se todas as afirmativas estiverem corretas. 
C- Se somente as afirmativas I e III estiverem corretas. 
D- Se somente a afirmativa I estiver correta. 
E- Se somente as afirmativas II e III estiverem corretas. 
 
RESPOSTA: A. 
11 - Sistemas Pleno Árvore AVL é uma árvore de busca autobalanceada. Isso significa 
que: 
A- Cada nó da árvore possui até três descendentes. 
B- As alturas das duas subárvores a partir de cada nó diferem no máximo em duas 
unidades. 
C- Pode possuir até duas raízes. 
D- As alturas das duas subárvores a partir de cada nó diferem no máximo em uma 
unidade. 
E- As alturas das duas subárvores a partir de cada nó são exatamente iguais. 
 
RESPOSTA: D. 
12 - Após a inserção de um nó, é necessário verificar cada um dos nós ancestrais desse 
nó inserido, relativamente à consistência com as regras estruturais de uma árvore AVL. 
PORQUE 
O fator de balanceamento de cada nó, em uma árvore AVL, deve pertencer ao 
conjunto formado por {−2, −1, 0, +1, +2}. 
Analisando-se as afirmações acima, conclui-se que: 
A- As duas afirmações são verdadeiras, e a segunda não justifica a primeira. 
B- A primeira afirmação é verdadeira, e a segunda é falsa. 
C- A primeira afirmação é falsa, e a segunda é verdadeira. 
D- As duas afirmações são verdadeiras, e a segunda justifica a primeira. 
E- As duas afirmações são falsas. 
 
RESPOSTA: B. 
13 - A linguagem C permite alocar (reservar) dinamicamente (em tempo de execução) 
blocos de memórias utilizando ponteiros. A esse processo dá-se o nome de alocação 
dinâmica, que faz uso das funções malloc, calloc, realloc e free, disponíveis na 
biblioteca stdlib.h. Para liberar um bloco de memória previamente alocado, por meio 
de um único parâmetro de entrada, faz-se uso de qual função? 
A- Free 
B- Calloc 
C- Clear 
D- Realloc 
E- Malloc 
 
RESPOSTA: A. 
14 - Considere uma estrutura de dados do tipo vetor. Com respeito a tal estrutura, é 
correto que seus componentes são: 
A- heterogêneos e com acesso FIFO. 
B- homogêneos e de acesso aleatório por intermédio de índices. 
C- heterogêneos e com acesso indexado-sequencial. 
D- heterogêneos e com acesso LIFO. 
E- homogêneos e acesso não indexado. 
 
RESPOSTA: B. 
15 - A maioria dos softwares de aplicação possui comandos de "Desfazer" e "Refazer". 
O primeiro desfaz a última operação ou texto digitado, enquanto que, o segundo refaz 
uma operação ou texto desfeito, conforme sugerem os nomes dos comandos. 
Internamente, nos softwares, podem ser usadas duas estruturas de dados que 
armazenam as sucessivas operações de "Desfazer" e "Refazer", de modo que o 
próximo "Refazer" sempre recupera o último "Desfazer". Os tipos de estrutura de 
dados que podem ser usados para "Desfazer" e "Refazer" são, respectivamente: 
A- Pilha e Fila duplamente encadeada 
B- Pilha e Fila 
C- Fila e Pilha 
D- Fila e Fila 
E- Pilha e Pilha 
 
RESPOSTA: E. 
16 - Observe o trecho de código abaixo, escrito na linguagem C. 
void quadrado(float *r, float *t); 
int main() { 
float a, b; 
printf("Entre com um numero complexo (2 numerosinteiros):"); 
 scanf("%f %f", &a, &b); 
 quadrado(&a, &b); 
 printf("O quadrado do numero e %f + i %f \n", a, b); 
} 
Com base nesse código, é correto afirmar que as variáveis a e b: 
A- Indicam, quando precedidas pelo caracter &, que os parâmetros podem ser 
modificados pelas funções scanf() e quadrado(). 
B- São parâmetros formais na chamada da função quadrado() dentro da função 
main(). 
C- Não podem ser modificadas pela função quadrado(), porque a passagem de 
parâmetros é por valor. 
D- São utilizadas como passagem de parâmetros por resultado na função printf(). 
E- Podem ser modificadas pela função printf(), porque a passagem de parâmetros 
é por valor 
 
RESPOSTA: A. 
17 - Analisando o quadro comparativo abaixo, marque a opção que indica a melhor 
escolha de algoritmo de ordenação. 
 
A- Insert Sort, Merge Sort, Selection sort e Buble sort. 
B- Buble sort, Insert sort, Merge sort e Selection sort 
C- Selection sort, Merge sort, buble sort e Insert sort. 
D- Merge sort, selection sort, buble sort e insert sort. 
E- Merge sort, Buble sort, insert sort e Selection sort. 
 
RESPOSTA: E. 
18 - Um método de ordenação é dito estável quando preserva a ordem original dos 
elementos da lista durante a execução. Analise as afirmativas abaixo e marque a opção 
correta: 
1- A estabilidade não impacta na complexidade computacional teórica. 
2- A estabilidade pode impactar no tempo de execução do algoritmo uma vez que, em 
algoritmos estáveis, sequências "quase" ordenadas implicam em tempo de 
execução menor. 
3- O conceito de estabilidade é puramente teórico e não tem implicação prática. 
 
A- Todas são falsas. 
B- 1, 2 são verdadeiras e 3 é falsa. 
C- 1, 2 e 3 são verdadeiras. 
D- 1 é verdadeira e 2 e 3 são falsas. 
E- Todas são verdadeiras. 
 
RESPOSTA: B. 
19 - Considere o código fonte abaixo, escrito em linguagem C, e analise as afirmativas 
abaixo. 
#include 
#include struct 
entrada_cadastro { 
char name[50]; 
int idade; 
} int main() { 
 struct entrada_cadastro *ptr; 
ptr = malloc(sizeof(ptr)); 
if(ptr == NULL) { 
printf("Falha na alocação de memória!\n"); 
return(1); } 
 memset(ptr, 0x0, sezeof(*ptr)); strcpy(ptr->name, "Aluno"); 
ptr->idade=20; return(0);} 
Marque (V) para verdadeiro ou (F) para falso. 
( ) A alocação de memória, presente na função main, efetuada com a função malloc, 
resulta na mesma quantidade alocada em bytes que ptr = malloc(sizeof(struct 
entrada_cadastro)). 
( ) A função strcpy copia a palavra Aluno para o vetor name da struct entrada_cadastro. 
( ) O acesso aos campos da estrutura de dados é realizado através do ponteiro nomeado 
ptr de tipo struct entrada_cadastro. 
A sequência correta é: 
A- V, V, F. 
B- F, V, V. 
C- V, V, V. 
D- F, F, V. 
E- V, F, F. 
 
RESPOSTA: B. 
20 - A estrutura abaixo representa a célula de uma árvore em linguagem C: 
 typedef struct _no { i 
nt chave; 
 struct no *esq, *dir; 
} no; 
Assinale a alternativa correta sobre qual sequência será impressa ao executar um 
caminhamento na árvore abaixo, conforme o código escrito em linguagem C a seguir. 
 
void ordem (no *arvore) { 
if(arvore!=NULL) { 
printf("%d", arvore->chave); 
ordem(arvore->esq); 
ordem(arvore->dir); } } 
A- AEXYBCD 
B- CBDAXEY 
C- ABCDEXY 
D- YXEABBC 
E- ABDCEYX 
 
RESPOSTA: C. 
21- Assinale a alternativa correta em relação à definição de variáveis globais e locais. 
A- As variáveis definidas como globais e locais precisam ser declaradas repetidas 
vezes dentro de cada sub-rotina. 
B- Uma variável global não pode ser visível a todas as sub-rotinas 
hierarquicamente subordinadas à rotina principal. 
C- Uma variável local pode ser considerada global quando declarada no 
cabeçalho de uma sub-rotina, porém só é válida dentro da rotina à qual está 
declarada. 
D- Uma variável global não pode ser utilizada por qualquer sub-rotina 
subordinada ao algoritmo principal. 
E- Uma variável global é declarada no início do algoritmo principal de um 
programa, pode ser utilizada por qualquer sub-rotina subordinada ao 
algoritmo principal. 
 
RESPOSTA: E. 
22 - Se E (x) é uma função que enfileira "x" pela direita da fila F e D () é uma função 
que desenfileira, a opção que mostra a sequência correta de operações que 
transforma a fila F = [ A, R, G, O, M ] em F = [ O, M, A, R ] é: 
A- E(A), E(R), D (), D(), D(). 
B- D (), D(), D(), E(A), E(R), E(O). 
C- D (), D(), D(), D(), E(R), E(A), E(O). 
D- D (), D(), D(), E(R), E(A), E(O). 
E- D (), D(), D(), D(), E(O), E(A), E(R). 
 
RESPOSTA: B. 
23 - Sobre pilhas e filas, avalie as assertivas a seguir: 
I) Uma forma de se evitar o desperdício de memória numa fila em alocação 
sequencial é utilizar-se lista circular. 
II) Em uma pilha em alocação encadeada, a complexidade da remoção é O (n). 
III) Pilhas têm a propriedade de inverter a ordem de cadeias, enquanto as filas 
mantêm a ordem. 
A opção que contém todas as assertivas corretas é: 
A- I. 
B- I e III. 
C- II. 
D- II e III. 
E- I e II. 
 
RESPOSTA: B. 
24 - Em relação aos algoritmos de ordenação externa, é correto afirmar que: 
1. Executam em memória principal (RAM) somente. 
2. Executam em memória secundária (Disco) somente. 
3. Manipulam os dados na memória secundária, porém usam parcela da memória 
principal. 
 
A- As afirmativas 2 e 3 estão corretas. 
B- As afirmativas 1 e 3 estão corretas. 
C- A afirmativa 2 está correta. 
D- A afirmativa 3 está correta. 
E- A afirmativa 1 está correta. 
 
RESPOSTA: D. 
25 - Várias estruturas de dados podem ser utilizadas para armazenar dados de uma 
aplicação. Em relação ao assunto, assinale a alternativa correta. 
A- Uma estrutura de dados do tipo lista utiliza a ideia do primeiro a chegar, primeiro 
a ser servido para inserir elementos. 
B- Uma estrutura de dados do tipo fila utiliza a ideia do primeiro a chegar, primeiro 
a ser servido. 
C- Em uma estrutura de dados do tipo pilha, para retirar o elemento do topo da 
pilha, é necessário retirar o elemento base da pilha. 
D- Uma estrutura de dados do tipo pilha sempre retira os elementos que foram 
inseridos primeiro na estrutura. 
E- Uma estrutura de dados do tipo fila sempre retira os elementos que entraram 
por último na fila. 
 
RESPOSTA: B. 
 
 
26 - Uma lista ordenada alocada sequencialmente possui como desvantagem: 
A- Tamanho limitado de memória. 
B- Complexidade O(n) para a busca. 
C- Impossibilidade de acesso direto. 
D- Impossibilidade de remoção no meio da lista. 
E- A reserva de memória em posições contíguas. 
 
RESPOSTA: A. 
27 - Em programação de computadores uma sub-rotina pode ser uma função ou um 
procedimento. Sobre funções e procedimentos, pode-se afirmar: 
A- Nem função nem procedimento retornam valores. 
B- Funções sempre retornam valor do mesmo tipo recebido e procedimentos não. 
C- Que as funções retornam um único valor e procedimentos não retornam valores. 
D- Procedimentos retornam valores do mesmo tipo recebido e função nunca 
retornam tipo. 
E- Que funções não retornam um único valor e procedimentos retornam valores. 
 
RESPOSTA: C. 
28 - Algoritmos de ordenação baseados em comparação entre elementos da sequência 
tem complexidade computacional mínima de: 
A- O(log n) 
B- O(n22) 
C- O(n33) 
D- O(n) 
E- O(n log n) 
 
RESPOSTA: E. 
29 - Com relação à struct, é correto afirmar que: 
A- Cada elemento da struct é chamado componente. 
B- Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados 
do mesmo tipo. 
C- Cada elemento da struct é chamado campo e cada campo deve ser, 
obrigatoriamente, de um tipo de dados distinto de outro campo. 
D- A struct é sempre definida dentro da main. 
E- Cada elemento da struct é denominado membro ou campo, sendo que a struct 
pode armazenar elementos de tipos diferentes ou não. 
 
RESPOSTA: E. 
30 - Na linguagem deprogramação em C, as funções permitem a criação de programas 
em módulos, em que todas as variáveis, que são descritas nas definições de função, 
são locais, pois são conhecidas apenas na função em que são definidas. Cada 
biblioteca‐padrão tem um cabeçalho que contém os protótipos de função para todas 
as funções nessa biblioteca, assim como definições de vários tipos de dados e 
constantes que são necessárias para estas funções. Uma dessas bibliotecas tem a 
seguinte explicação: contém as definições comuns de tipo usadas pela C para realizar 
cálculos. Assinale‐a. 
A- math.h 
B- assert.h 
C- stdio.h 
D- stddef.h 
E- locale.h 
 
RESPOSTA: D. 
31 - 
Considerando a figura acima, que ilustra uma árvore de busca binária, assinale a opção 
correta. 
A- Se a árvore em tela for balanceada, depois da inserção de um nó 9, o nó 12 
assume a raiz da árvore. 
B- Transformando essa árvore em uma nova árvore de ordem 2, as folhas teriam 
de estar no nível 2. 
C- Se a referida árvore for balanceada, a inserção de um nó 5 fará que ele tome o 
lugar do nó 4, passando a ser o nó 5 a raiz da subárvore. 
D- O percurso a percorrer nessa árvore na pré-ordem é 4 10 15 12 8. 
E- Se a árvore em questão não for balanceada, então, com a remoção do nó 8, o nó 
12 deve assumir a raiz da árvore. 
 
RESPOSTA: A. 
32 - 
 
 
RESPOSTA: A. 
33 - 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 empregado { string nome; float salario; }; 
Suponha ainda que exista um vetor desta estrutura, definido como: 
 empregado vet [ 100]; 
Marque a alternativa em que é atribuída de forma correta o salario 805.7 para o 
décimo primeiro elemento deste vetor. 
A- empregado.vet[10]=805.7; 
B- vet[10].empregado.salario=805.7; 
C- empregado.vet[10].nota=805.7; 
D- vet[10]=empregado.805.7; 
E- vet[10].salario=805.7; 
 
RESPOSTA: E. 
34 - Há duas maneiras de se passar argumentos ou parâmetros para funções: por valor 
e por referência. Sobre passagem de parâmetros, analise as seguintes afirmativas: 
I. Na passagem por referência, o que é passado como argumento no 
parâmetro formal é o endereço da variável. 
II. Na passagem por valor, o valor é copiado do argumento para o 
parâmetro formal da função. 
III. Por exemplo, quando duas variáveis inteiras i1 e i2 são passadas por 
valor à função troca() chamada pelo programa principal, elas também 
são alteradas no programa principal. 
IV. Na passagem por referência, dentro da função, o argumento real 
utilizado na chamada é acessado através do seu endereço, sendo assim 
alterado. 
V. Na passagem por valor, quaisquer alterações feitas nestes parâmetros 
dentro da função não irão afetar as variáveis usadas como argumentos 
para chamá-la. 
Está CORRETO o que se afirma em: 
A- I, III e V, apenas 
B- I e III 
C- I, II, IV e V, apenas 
D- V, apenas 
E- II e IV, apenas 
 
RESPOSTA: C. 
35 - A modularização de algoritmos é importante para organizar melhor o código, 
facilitar a manutenção, entre outras coisas. Sobre funções e procedimentos, assinale 
a alternativa CORRETA sobre a modularização: 
A- As variáveis definidas no escopo de cada função são acessíveis em todo o 
programa. 
B- A função retorna um valor ao programa. 
C- As variáveis locais são declaradas no escopo do programa inteiro. 
D- O procedimento sempre retorna um valor ao programa. 
E- A passagem de parâmetros para um subprograma pode ser somente por valor 
 
RESPOSTA: B. 
36 - Sejam as seguintes propriedades de estruturas de dados: 
I- A remoção de um elemento interno obriga ao deslocamento de todos os 
sucessores. 
II- Um nó pode ser inserido no meio da estrutura com complexidade O (1). 
III- A inserção e a remoção podem ser feitas em ambas as extremidades. 
As descrições acima se referem respectivamente à: 
A- Lista em alocação encadeada, Lista circular e Lista em alocação sequencial. 
B- Lista em alocação sequencial, Lista em alocação sequencial e deque. 
C- Lista em alocação sequencial, Lista em alocação encadeada e deque. 
D- Lista em alocação sequencial, Lista circular e Lista em alocação encadeada. 
E- Lista em alocação encadeada, Lista em alocação sequencial e deque. 
 
RESPOSTA: C. 
37 - Comparando o Merge Sort com o Método da bolha podemos afirmar que: 
A- O merge sort, por ser instável, sempre executará em tempo superior ao buble 
sort. 
B- O buble sort sempre irá executar mais rápido que o merge sort por ter 
complexidade computacional inferior ao merge sort. 
C- Ambos têm complexidade comparável, assim, existem não é possível afirmar 
qual irá executar em melhor tempo. 
D- O merge sort tem complexidade computacional inferior ao buble sort, porém o 
merge sort sempre executa em um tempo proporcional a n log n, enquanto o 
buble sort, pode executar em tempo linear em algumas instâncias (melhores 
casos). 
E- O merge sort sempre executará mais rápido que o buble sort uma vez que sua 
complexidade é O(n log n) e a do buble sort O(n ). 
 
RESPOSTA: D. 
38 - Sobre o método da bolha é correto afirmar que: 
A- O tempo de execução pode ser linear em relação ao tamanho da entrada se a 
instância apresentada já estiver ordenada. 
B- O algoritmo executa sempre no mesmo tempo para instâncias de mesmo 
tamanho n. 
C- A complexidade computacional deste algoritmo é O (n log n). 
D- O tempo de execução é definido pela complexidade computacional sempre, 
independentemente da instância apresentada. 
E- O tempo de execução pode ser linear em relação ao tamanho da entrada se a 
instância apresentada estiver ordenada em ordem reversa a desejada. 
 
RESPOSTA: A. 
39 - Árvore de pesquisa é uma estrutura de dados eficiente para armazenar 
informação, sendo particularmente adequada quando existe a necessidade de 
considerar todos ou alguma combinação de registros. Assinale uma combinação 
correta desses registros: 
A- Acesso direto e sequencial eficientes, facilidade de inserção e retirada de 
registro, boa taxa de utilização de memória, utilização de memória primária e 
secundária. 
B- As operações de inserir, retirar e pesquisar são definidas. 
C- Utilização de estruturas de dados como lista, pilha e fila. 
D- Não é necessário indexar os registros. 
E- Utilização de algoritmos de ordenação eficientes. 
 
RESPOSTA: A. 
40 - Imagine que temos números de 1 a 100 em uma árvore de pesquisa binária (ABP). 
Agora queremos procurar o número 50. Assinale a alternativa que apresenta a possível 
sequência de elementos da árvore consultada. 
A- 42 - 60 - 20 - 30 - 50. 
B- 40 - 60 - 45 - 48 - 50. 
C- 40 - 10 - 45 - 30 - 50. 
D- 42 - 60 - 20 - 48 - 50. 
E- 40 - 15 - 45 - 30 - 50. 
 
RESPOSTA: B. 
41 - Referente a alocação dinâmica de memória em C, é CORRETO afirmar: 
A- As funções malloc e free e o operador sizeof, são essenciais para a alocação 
dinâmica de memória. 
B- As funções calloc e realloc são usadas para liberar arrays. 
C- A função malloc usa o número de blocos de memória que serão alocados na 
memória. 
D- A função clear é usada para limpar o conteúdo de um ponteiro. 
E- A função free é geralmente usada com o operador sizeof. 
 
RESPOSTA: A. 
42 - Considere a definição da seguinte struct escrita em linguagem de programação C. 
struct endereço { 
char logradouro [50]; 
int numero; 
char cidade[30]; 
char estado[2]; 
} end1; 
A alternativa que manipula corretamente a struct acima definida é: 
A- Para copiar o conteúdo das variáveis de end1 para end2: end1.strcpy = end2; 
B- Para criar um array de structs endereco: struct endereco[10]; 
C- Para mostrar o conteúdo da variável logradouro: printf("%s", logradouro.end1); 
D- 1 Questão a 2 Questão a Para armazenar um valor inteiro na variável numero:scanf("%d",&end1.numero); 
E- Para armazenar a string "RJ" na variável estado: endereco.estado= "RJ" 
 
RESPOSTA: D. 
43 - Observe o trecho de código abaixo, escrito na linguagem C. 
void imprimecabecalho() 
{ ... } void calcula() 
{ int soma; ... imprimecabecalho(); } 
 Com base nesse código, é correto afirmar que: 
A- O escopo da variável soma é dinâmico e se estende durante toda execução do 
programa. 
B- O escopo e o tempo de vida da variável soma são iguais e contidos pela função 
imprimecabecalho(). 
C- O escopo da variável soma se estende da função calcula() para a função 
imprimecabecalho(). 
D- O tempo de vida da variável soma estende-se durante o tempo em que a função 
imprimecabecalho() é executada. 
E- O escopo da variável soma é contido pela função imprimecabecalho(). 
 
RESPOSTA: D. 
44 - Em relação ao uso e conceitos de procedimentos e funções em lógica de 
programação, analise as seguintes afirmativas: 
I. Procedimentos e funções são blocos de instruções para realizar tarefas 
específicas e são considerados subrotinas. 
II. Em um procedimento, a passagem de parâmetros é obrigatória. 
III. Em uma função, a passagem de parâmetros e o retorno de um valor são 
obrigatórios. 
Está CORRETO o que se afirma em: 
A- II e III, apenas. 
B- I e II, apenas. 
C- II, apenas. 
D- I, apenas. 
E- I e III, apena 
RESPOSTA: D. 
45 - O acesso ao elemento de uma estrutura de dados tipo pilha se restringe ao mais 
recente na pilha. Já o acesso a um elemento de uma estrutura tipo fila ocorre ao dado 
há mais tempo na fila. Sobre pilhas e filas, avalie as assertivas a seguir: 
1- Uma forma de evitar o desperdício de memória numa fila em alocação 
sequencial é utilizar-se lista circular. 
2- Em uma pilha em alocação encadeada, a complexidade da remoção é O(n). 
3- Pilhas têm a propriedade de inverter a ordem de cadeias, enquanto as filas 
mantêm a ordem. 
A opção que contém todas as assertivas corretas é: 
A- II e III. 
B- I e III. 
C- I e II. 
D- II. 
E- I. 
 
RESPOSTA: B. 
46 - Sobre listas duplamente encadeadas, afirma-se: 
I) Cada nó usa o dobro do número de campos ponteiro de uma lista 
simplesmente encadeada. 
II) A complexidade de remoção é metade da complexidade de remoção em 
lista simplesmente encadeada. 
III) Não permitem a inserção de nó no meio da lista. 
É correto apenas: 
A- I. 
B- III. 
C- II e III. 
D- II. 
E- I e III. 
 
RESPOSTA: A. 
47 - Avalie as afirmativas abaixo: 
1- O merge sort executa em O(n log n). 
2- O bucket sort executa em O(n). 
3- Algoritmos que executam em uma complexidade abaixo de O(n log n) 
ordenam a sequência sem comparar os elementos desta sequência. 
 
A- Somente a 3 está correta. 
B- Todas estão corretas. 
C- Somente a 1 está correta. 
D- Somente a 1 e a 2 estão corretas. 
E- Somente a 2 e a 3 estão corretas. 
 
RESPOSTA: B. 
48 - Todos os algoritmos de ordenação interna devem ter complexidade de espaço de: 
A- O(n² ) 
B- O(n) 
C- O(n log n) 
D- O(1) 
E- O(n³ ) 
 
RESPOSTA: B. 
49 - Analise a seguinte árvore binária e assinale a alternativa correta. 
 
A- Com exceção do nó "A", que é raiz, os demais nós são conhecido como folhas. 
B- TA é a subárvore enraizada em "A", portanto toda a árvore. 
C- "B" tem grau de saída 3 e ¿C¿ grau 2. 
D- "B" e "C" são caules da árvore. 
E- "A" é filho de todos. 
 
RESPOSTA: B. 
50 - Árvores binárias podem ser usadas para representar expressões aritméticas. 
Como um exemplo de expressão, podemos ter: a * b + f sen - h * j com os elementos 
enumerados "Em-ordem". Nesse caso, a árvore binária terá como raiz: 
A- O átomo + 
B- O átomo sen 
C- O átomo * 
D- O átomo a 
E- O átomo j 
 
RESPOSTA: A. 
51 - Na linguagem C, é possível realizar alocações de memória utilizando alocação 
dinâmica ou estática. Assinale a alternativa que representa uma alocação dinâmica de 
um vetor do tipo primitivo double com 10 posições na linguagem C. 
A- double[10] 
B- malloc(10 * sizeof(double) + 1) 
C- malloc(10 * sizeof(double)) 
D- double[10 * sizeof(double) + 1) 
E- double[10 * sizeof(double) - 1) 
 
RESPOSTA: C. 
52 - Sobre estruturas de dados, assinale a alternativa CORRETA. 
A- Filas são comumente implementadas sobre arrays ou grafos. 
B- Grafos são estruturas de dados em que cada nó possui um valor e um conjunto 
de relações unidirecionais com os demais nós. 
C- Listas duplamente ligadas são estruturas em que cada nó possui uma referência 
tanto ao nó que o antecede quanto ao nó que o sucede. Além disso, o último nó 
da lista também possui uma referência para o primeiro nó da lista. 
D- Árvores de busca de binárias são estruturas nas quais nós filhos possuem valores 
numericamente inferiores aos dos nós pais. 
E- Pilhas são tipos de dados abstratos caracterizadas pela política "primeiro a 
entrar, último a sair". 
 
RESPOSTA: E. 
53 - A modularização de algoritmos é importante para organizar melhor o código, 
facilitar a manutenção, entre outras coisas. Sobre funções e procedimentos, 
assinale a alternativa CORRETA sobre a modularização: 
A- A função retorna um valor ao programa. 
B- O procedimento sempre retorna um valor ao programa. 
C- As variáveis locais são declaradas no escopo do programa inteiro. 
D- A passagem de parâmetros para um subprograma pode ser somente por valor. 
E- As variáveis definidas no escopo de cada função são acessíveis em todo o 
programa. 
 
RESPOSTA: A. 
54 - Sobre o método da bolha é correto afirmar que: 
A- A complexidade computacional deste algoritmo é O (n log n). 
B- O tempo de execução pode ser linear em relação ao tamanho da entrada se a 
instância apresentada já estiver ordenada. 
C- O tempo de execução pode ser linear em relação ao tamanho da entrada se a 
instância apresentada estiver ordenada em ordem reversa a desejada. 
D- O algoritmo executa sempre no mesmo tempo para instâncias de mesmo 
tamanho n. 
E- O tempo de execução é definido pela complexidade computacional sempre, 
independentemente da instância apresentada. 
 
RESPOSTA: B. 
55 - Árvore de pesquisa é uma estrutura de dados eficiente para armazenar 
informação, sendo particularmente adequada quando existe a necessidade de 
considerar todos ou alguma combinação de registros. Assinale uma combinação 
correta desses registros. 
A- Utilização de estruturas de dados como lista, pilha e fila. 
B- As operações de inserir, retirar e pesquisar são definidas. 
C- Utilização de algoritmos de ordenação eficientes. 
D- Não é necessário indexar os registros. 
E- Acesso direto e sequencial eficientes, facilidade de inserção e retirada de 
registro, boa taxa de utilização de memória, utilização de memória primária e 
secundária. 
 
RESPOSTA: E. 
56 - Uma pilha segue a regra: "o último a chegar é o primeiro a sair”. Já as filas 
obedecem à regra: o primeiro a chegar é o primeiro a sair. Com base nesses 
argumentos, Uma pilha P e uma fila F originalmente com n elementos cada (n > 5), 
onde suas operações são: 
empilha(P, elemento): insere elemento na pilha P; 
desempilha(P): remove da pilha P e retorna o elemento removido; 
enfileira(F, elemento): insere elemento na fila F; 
desenfileira(F): remove da fila F e retorna o elemento removido; 
para i = 1 até n, faça 
empilha(P, desempilha(P)) 
enfileira(F, desenfileira(F)) 
fim-para 
Ao final da execução do pseudocódigo, os estados finais de P e F serão 
respectivamente: 
A- elementos em ordem original e elementos em ordem inversa. 
B- elementos em ordem original e elementos em ordem original. 
C- elementos em ordem inversa e elementos em ordem original. 
D- Ambas as estruturas estarão vazias. 
E- elementos em ordem inversa e elementos em ordem inversa. 
 
RESPOSTA: B.

Outros materiais