Estrutura de dados e Algoritmos Flashcards
Com base no contexto apresentado, quanto à principal característica de uma lista encadeada simples, assinale a alternativa correta:
a) A inserção de novos elementos é sempre realizada no final da lista.
b) A busca por elementos na lista tem complexidade O(log n).
c) Cada elemento da lista contém um ponteiro para o próximo elemento na sequência.
d) Ela possui um tamanho fixo definido no momento da criação
c) Cada elemento da lista contém um ponteiro para o próximo elemento na sequência.
Quanto ao princípio fundamental do algoritmo de ordenação QuickSort, assinale a alternativa correta:
a) Ordenação por inserção
b) Divide e conquista
c) Busca binária
d) Troca de elementos adjacentes.
b) Divide e conquista
No que descreve uma característica fundamental da estrutura de dados em árvore, assinale a alternativa correta:
a) As árvores são estruturas de dados estáticas, o que significa que não é possivel adicionar ou remover elementos após sua criação
b) Em uma árvore, cada elemento pode ter múltiplos prodecessores, o que permite uma organização complexa dos dados.
c) Na estrutura de árvore, um elemento especial chamado de “raiz” está no topo e não possui nenhum antecessor.
d) Uma árvore é uma estrutura de dados multilinear, onde cada elemento possui uma referência para o próximo na sequência.
c) Na estrutura de árvore, um elemento especial chamado de “raiz” está no topo e não possui nenhum antecessor.
Após a exploração dessa estrutura, sobre a principal vantagem de uma lista duplamente encadeada em relação a uma lista encadeada simples, assinale a alternativa correta:
a) Diminuição da complexidade temporal ao buscar elementos
b) Utilização de menor quantidade de memória devido à presença de apenas um ponteiro por nó
c) Facilidade e rapidez na inserção e remoção de elementos em qualquer ponto da lista.
d) Simplificação na implementação de algoritmos de ordenação.
d) Simplificação na implementação de algoritmos de ordenação.
include <stdio.h></stdio.h>
Quando uma variável precisa ser acessada em diferentes partes de um programa, os ponteiros desempenham um papel crucial. Nesse cenário, é comum encontrar vários ponteiros espalhados por várias seções do código, cada um apontando para a variável que contém os dados necessários. Uma vantagem significativa dessa abordagem é que, se esses dados forem modificados, não há preocupação, pois todos os ponteiros no programa estão apontando para o endereço onde os dados atualizados residem. Essa flexibilidade proporcionada pelos ponteiros é essencial para garantir a eficiência e a consistência na manipulação de dados em diferentes partes do código.
Considerando o uso de ponteiros em estruturas de dados, analise o seguinte código em C:
int main() {
int list[5] = {7, 8, 6, 4, 1};
int *pont = list;
printf(“%d\n”, *pont + 2);
printf(“%d\n”, *(pont + 2));
printf(“%d\n”, pont[2]);
printf(“%d\n”, pont++);
printf(“%d\n”, (pont)++);
return 0;
}
Qual será a saída impressa ao executar este código?
a) 8-1-4-7-6
b) 9-6-6-7-8
c) 7-6-4-2-9
d) 9-6-8-4-1
Linha 1: printf(“%d\n”, *pont + 2);
pont é list[0], que é 7.
pont + 2 é 7 + 2 = 9.
Resultado: 9
Linha 2: printf(“%d\n”, *(pont + 2));
* pont ainda aponta para list[0].
* pont + 2 aponta para list[2], que é 6.
* (pont + 2) = 6.
Resultado: 6
Linha 3: printf(“%d\n”, pont[2]);
* pont[2] é equivalente a *(pont + 2), ainda é 6.
Resultado: 6
Linha 4: printf(“%d\n”, *pont++);
* Aqui temos o operador pont++, que usa o valor atual e depois incrementa o ponteiro.
* *pont (ainda list[0]) = 7, e depois pont passa a apontar para list[1].
Resultado: 7
Linha 5: printf(“%d\n”, (pont)++);
* pont agora aponta para list[1], que é 8.
* (pont)++ retorna 8, mas depois incrementa o valor armazenado nesse endereço (pós-incremento).
* Então o valor impresso é 8, mas agora list[1] se torna 9 após o incremento.
Resultado: 8
Quando estamos manipulando uma pilha, podemos empilhar ou desempilhar dados a qualquer momento, entretanto o que poderá acontecer se tentarmos desempilhar um elemento de uma pilha que esteja vazia?
a) Remove o elemento da pilha sem retornar qualquer valor.
b) Retorna NULL.
c) Retorna o último elemento que foi removido da pilha.
d) Apresenta uma mensagem de alerta de pilha vazia.
d) Apresenta uma mensagem de alerta de pilha vazia.