Questões de Concurso Comentadas sobre algoritmos e estrutura de dados
Foram encontradas 2.113 questões
Considerando uma estrutura de dados do tipo fila, e a seguinte sequência de comandos sobre essa fila (sendo que o comando Push representa uma inserção de elemento e o comando Pop representa uma exclusão de elemento) e considerando também que a fila estava inicialmente vazia:
Push 3, Push 5, Pop 3, Push 7, Pop 5, Push 9, Push 8
Após a execução dessa sequência de comandos, o conjunto de elementos que resulta na fila é:
Considere o algoritmo abaixo, escrito em linguagem estruturada:
A = valor inicial
T = 0
Enquanto A < 10 faça
T = A + T
A = A + 1
Fim Enquanto
Supondo que A tenha como valores iniciais 5 e 2, os valores finais de T serão, respectivamente,
No que se refere a algoritmos e estruturas de dados, julgue o item a seguir.
É possível eliminar dados em uma fila somente no início
da estrutura.
No que se refere a algoritmos e estruturas de dados, julgue o item a seguir.
Embora o QuickSort e o MergeSort sejam algoritmos de
ordenação do tipo divisão e conquista, somente o MergeSort
utiliza intervalos de comparação denominados gap.
No que se refere a algoritmos e estruturas de dados, julgue o item a seguir.
Em uma lista circular, o ponteiro anterior ao início da lista
aponta para o fim, e o ponteiro próximo à célula do fim da lista
aponta para o início.
Na programação de computadores, considere o seguinte algoritmo:
var a, b, c: inteiro
var x, y, z: lógico início
a ← 2
b ← 4
c ← 0
x ← ((a+b) < (b-c) .E. (a*a) = (b-c))
y ← ((b/a) >= (a-c) .OU. (b>=a))
z ← ((a-1) > (c+1) .E. (b*c) >= (a+1)) fim
As variáveis x, y e z receberão, respectivamente, os
valores:
Nas expressões lógicas mostradas a seguir, A, B e C são variáveis booleanas. Assinale C para as expressões lógicas corretas e E para as erradas.
( ) (A.or.B).or.C = A.or.(B.or.C)
( ) A.and.1=A
( ) A.or.(B.and.C) = (A.or.B).and.(A.or.C)
( ) A.and.(B.or.C)=(A.or.B).or.(A.or.C)
( ) A.or.0= A
( ) (A.and.B).and.C= A.and.(B.and.C)
( ) A.or.(not(A))=1
( ) A.and.(not(A))=0
( ) (A.or.B).or.C=A.and.(B.and.C)
( ) A.and.(B.or.C)=(A.and.B).or.(A.and.C)
Assinale a alternativa que apresenta a sequência
correta de C e E de cima para baixo:
Analise as afirmativas a seguir, referentes aos tipos básicos de estruturas de dados e assinale V para as afirmativas verdadeiras e F para as falsas:
( ) Pode-se combinar várias listas lineares. A matriz é um caso típico onde cada elemento pertence pelo menos a duas listas (linhas e colunas), podendo ser implementada de forma sequencial ou encadeada.
( ) A fila é uma estrutura de dados baseada no princípio LIFO (last in, first out), na qual os dados que foram inseridos primeiros na pilha serão os últimos a serem removidos.
( ) As pilhas são estruturas baseadas no princípio FIFO (first in, first out), em que os elementos que foram inseridos no início são os primeiros a serem removidos.
( ) Um deque é uma lista linear onde as operações de inserção e remoção podem ser efetuadas tanto no início quanto no final da lista linear.
( ) Uma árvore binária é uma árvore em que cada nó tem no máximo dois filhos e o percurso em uma árvore binária permite a obtenção de uma sequência linear de seus nós.
( ) Na teoria dos grafos, uma árvore é um grafo conexo (existe caminho entre quaisquer dois de seus vértices) e acíclico (não possui ciclos).
Assinale a alternativa que apresenta a sequência
correta de V e F de cima para baixo:
O mergesort é um algoritmo de ordenação do tipo dividir-para-conquistar. Sua ideia básica consiste em dividir o problema em vários subproblemas, e resolver esses subproblemas por meio da recursividade e, em seguida,após todos os subproblemas terem sido resolvidos,ocorre a conquista, que é a união das resoluções dos subproblemas. O algoritmo mergesort, apresentado em seguida, está codificado em C/C++.Esse algoritmo ordena o vetor de inteiros a[p],..., a[r](onde, p<r) usando um vetor auxiliar b[p],..., b[r].O vetor a[ ] é dividido recursivamente ao meio em duas instâncias menores, que são ordenadas e então colocadas
juntas, ordenando todo o vetor. No código estão faltando as linhas que fazem a divisão por recursão (linhas 7 e 8) e as linhas que concretizam a fase de conquista, unindo todas as intercalações no vetor principal (linhas 11 e 12).
1. voidmergesort(int a[], int p, int r)
2. {
3. inti,j,k,m;
4. if (r > p)
5. {
6. m = (r + p)/2;
7. …
8. …
9. for (i = m+1; i> p; i--) b[i-1] = a[i-1];
10. for (j = m; j < r; j++) b[r+m-j] = a[j+1];
11. ...
12. ...
13. }
14. }
Considere o seguinte pseudocódigo:
Função misteriosa(a: inteiro)
Início
Se (a<1) então retorna -1;
Se (a==1) então retorna 2;
Se (a>1) então retorna (misteriosa(a-1)* misteriosa(a-2));
Fim
Para tentar descobrir o que a função misteriosa faz, um aluno experimentou a função com os valores de entrada 1, 3 e 4 e obteve os seguintes resultados, respectivamente:
Com relação às estruturas de controle em programas de computador, julgue o item subsecutivo.
Para cada corrotina, é necessária uma pilha de registros de
ativação que cresça e diminua durante a sua execução,
independentemente das pilhas das outras corrotinas.