EPS [Link]
asp
7055501169
18/06/2025 19:14
AV - A
Nome: Matrícula: ____________________
Disciplina: ARA0098 / ESTRUTURA DE DADOS Data: ___ /___ /______
Período: 2025.1 / AV Turma: 3001 NSQ: 13325791
Leia com atenção as questões antes de responder.
É proibido o uso de equipamentos eletrônicos portáteis e consulta a materiais de qualquer natureza durante a realização
da prova.
Boa prova.
1. _______ de 0,70
(UFAM/2022) Considere o programa a seguir, elaborado na linguagem ANSI C:
#include < stdio.h >
int* pa, a;
int main() { a = 10; pa = &a; a = 8; printf("%d", a); printf(" %d", *pa); }
Assinale a alternativa correta sobre a saída (output) obtida, ao se executar o programa:
8 10
10 8
9 10
88
10 10
2. _______ de 0,70
Considere o seguinte código em C, que implementa o algoritmo de ordenação Merge Sort:
#include
void merge(int arr[], int l, int m, int r) {
int i, j, k;
int n1 = m - l + 1;
int n2 = r - m;
int L[n1], R[n2];
for(i = 0; i < n1; i++)
L[i] = arr[l + i];
for(j = 0; j < n2; j++)
R[j] = arr[m + 1 + j];
1 of 5 18/06/2025, 19:15
EPS [Link]
i = 0; j = 0; k = l;
while(i < n1 && j < n2) {
if(L[i] <= R[j]) {
arr[k] = L[i];
i++;
} else {
arr[k] = R[j];
j++;
}
k++;
}
while(i < n1) {
arr[k] = L[i];
i++; k++;
}
while(j < n2) {
arr[k] = R[j];
j++; k++;
}
}
void mergeSort(int arr[], int l, int r) {
if(l < r) {
int m = l + (r - l) / 2;
mergeSort(arr, l, m);
mergeSort(arr, m + 1, r);
merge(arr, l, m, r);
}
}
Com base somente no código apresentado, analise as a�rmações abaixo:
I. A função merge cria dois vetores auxiliares L e R que armazenam partes do vetor original antes da fusão.
II. A função mergeSort é recursiva e sua chamada termina apenas quando l não é mais menor que r.
III. O código possui erro de compilação porque a linguagem C não permite criação de vetores de tamanho variável
como int L[n1].
IV. O loop while(i < n1 && j < n2) é responsável por comparar e ordenar os elementos dos subvetores.
V. O valor de m é calculado para evitar over�ow ao somar l + r.
Apenas II e V estão corretas.
Apenas III está correta.
Todas as alternativas estão corretas.
Apenas I, II, IV e V estão corretas.
Apenas I, II e IV estão corretas.
3. _______ de 0,70
Considere o seguinte programa em linguagem C:
#include
void altera(int x) {
x = x + 10;
printf("Dentro da função: %d\n", x);
}
int main() {
2 of 5 18/06/2025, 19:15
EPS [Link]
int a = 5;
altera(a);
printf("Fora da função: %d\n", a);
return 0;
}
Com base no código acima, analise as seguintes a�rmativas e escolha a alternativa que indica corretamente a saída
impressa pelo programa:
Dentro da função: 5
Fora da função: 15
Dentro da função: 15
Fora da função: 5
O código possui erro de compilação porque x não foi declarado no main.
Dentro da função: 15
Fora da função: 15
Dentro da função: 5
Fora da função: 5
4. _______ de 0,70
Considere a seguinte de�nição de um nó de uma lista duplamente encadeada em C:
typedef struct No {
int dado;
struct No* anterior;
struct No* proximo;
} No;
Suponha que temos três nós encadeados corretamente da seguinte forma:
O nó A aponta para B como próximo (A->proximo = B),
O nó B aponta para A como anterior (B->anterior = A) e para C como próximo (B->proximo = C),
O nó C aponta para B como anterior (C->anterior = B),
O ponteiro proximo de C e o ponteiro anterior de A são NULL.
Qual das alternativas a seguir descreve corretamente essa estrutura?
A lista é uma lista simplesmente encadeada, pois anterior nunca é usado.
A lista está malformada, pois todos os ponteiros anterior e proximo deveriam ser NULL.
A lista está corretamente estruturada como uma lista duplamente encadeada com três elementos.
A lista está invertida, pois anterior aponta sempre para o próximo nó.
Trata-se de uma lista circular.
5. _______ de 0,70
Em relação ao uso de registros (structs) na linguagem C, analise as seguintes a�rmativas:
I. Um struct permite agrupar variáveis de tipos diferentes sob um mesmo nome.
II. É possível declarar variáveis do tipo struct dentro de outra struct.
III. Os campos de uma struct podem ser acessados diretamente com o operador ponto (.), quando se tem a variável,
ou com ->, quando se tem um ponteiro.
IV. O uso de typedef com struct é obrigatório para que se possa criar variáveis do tipo de�nido
3 of 5 18/06/2025, 19:15
EPS [Link]
Apenas a a�rmativa IV está correta.
Apenas as a�rmativas I e IV estão corretas.
Todas as a�rmativas estão corretas.
Apenas as a�rmativas I, II e III estão corretas.
Apenas as a�rmativas II e III estão corretas.
6. _______ de 0,70
Considere a seguinte de�nição de estrutura em C:
typedef struct No {
int valor;
struct No* esquerda;
struct No* direita;
} No;
Com base apenas nessa estrutura e no seu conhecimento sobre estruturas dinâmicas encadeadas, analise as
a�rmativas abaixo:
I. A organização dos campos sugere que cada elemento pode estar ligado a até dois outros elementos distintos.
II. Se os ponteiros esquerda e direita forem ambos NULL, o nó pode ser considerado terminal na estrutura.
III. Uma forma natural de percorrer essa estrutura seria visitar recursivamente a parte esquerda, depois o nó atual, e
por �m a parte direita.
IV. Se em cada nó os valores da ¿parte esquerda¿ forem sempre menores e da ¿parte direita¿ sempre maiores, então a
estrutura garante uma organização adequada para buscas ordenadas.
V. Se a estrutura estiver completamente preenchida até um certo nível, e não houver "buracos", o total de elementos
será 2^(h+1) - 1, onde h representa o nível mais profundo.
Nenhuma das a�rmativas estão corretas.
Apenas as a�rmativas I, III, IV e V estão corretas.
Apenas as a�rmativas I, II e III estão corretas.
Apenas as a�rmativas II, III, IV e V estão corretas.
Apenas as a�rmativas I, II, IV e V estão corretas.
7. _______ de 0,70
Qual das seguintes características descreve corretamente uma pilha (stack)?
É uma estrutura de dados FIFO (First In, First Out).
Permite inserção e remoção de elementos em qualquer posição.
Utiliza uma política de FILO (First In, Last Out) para inserção e remoção de elementos.
Utiliza uma política de LIFO (Last In, First Out) para inserção e remoção de elementos.
Requer que os elementos sejam ordenados de maneira crescente.
8. _______ de 0,70
(UFV/2022 - Adaptada) Considere as a�rmativas a seguir sobre estrutura de dados:
I. Uma estrutura de dados heterogênea envolve a utilização de mais de um tipo básico de dados.
II. Uma lista encadeada pode ser de�nida como uma sequência de células em que cada célula contém um
elemento e o endereço da célula seguinte.
III. Uma pilha é uma estrutura de dados baseada no princípio "First In First Out" (FIFO).
4 of 5 18/06/2025, 19:15
EPS [Link]
IV. Filas e pilhas são estruturas de dados lineares; o organograma de uma empresa pode ser representado por
uma estrutura de árvore.
Está CORRETO o que se a�rma, apenas, em:
II e III.
I, II e IV.
II, III e IV.
I e III.
I e II.
9. _______ de 0,70
Ano: 2016 Banca: FAURGS Órgão: HCPA Prova: FAURGS - 2016 - HCPA - Analista de TI (Desenvolvimento)
Um algoritmo de ordenação é executado através dos seguintes passos:
(I) escolha de um elemento da lista, denominado pivô;
(II) rearranjo da lista, de forma que todos os elementos anteriores ao pivô sejam menores do que ele e que todos os
elementos posteriores ao pivô sejam maiores do que ele; e, também, de modo que o pivô, ao �m do processo, esteja
em sua posição �nal, havendo duas sublistas não ordenadas;
(III) ordenação recursiva das sublistas dos elementos menores e dos elementos maiores.
Que algoritmo é esse?
Bubble Sort
Merge Sort
Selection Sort
Quick Sort
Insertion Sort
10. _______ de 0,70
Considere a seguinte situação: você está desenvolvendo um sistema de cadastro de funcionários para uma empresa e
precisa armazenar informações sobre cada funcionário, incluindo nome, idade, cargo e salário. Qual seria uma
estrutura de dados heterogênea adequada para armazenar essas informações de forma organizada?
Fila
Pilha
Árvore
Lista Encadeada
Struct
Campus: Prova Impressa em 18/06/2025 por
ARACAJU YURI FARO DANTAS DE SANT ANNA
Ref.: 7055501169 Prova Montada em 31/05/2025
5 of 5 18/06/2025, 19:15