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 numeros inteiros):"); 
 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 de programaçã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 umnó 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 eo 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.

Mais conteúdos dessa disciplina