Baixe o app para aproveitar ainda mais
Prévia do material em texto
Estrutura de Dados em C Prof. Ronaldo Candido 1 Exercícios de revisão – AV2 1. Em termos da Estrutura de dados do tipo PILHA encadeada (alocação dinâmica), a sequência de ações empilha(10), empilha(3), empilha(5), empilha(8), desempilha(), desempilha(), empilha(20), promoveria a configuração da estrutura a partir do topo: a) 20 3 10 b) 20 3 5 8 c) 20 10 3 d) 10 3 5 8 e) 5 8 20 2. Assinale a alternativa correta sobre alocação de memória : a) Na alocação dinâmica de memória, a memória é alocada sob demanda, apenas quando necessário. b) A declaração de um vetor é um exemplo clássico de alocação dinâmica de memória. c) É correto afirmar que a alocação dinâmica de memória sempre leva a programas mais rápidos. d) Uma das vantagens da alocação dinâmica sobre a alocação estática é que não é necessário fazer a liberação da memória utilizada. e) Alocação estática de memória refere-se ao processo de alocar memória com o uso de ponteiros. 3. Em uma estrutura do tipo FIFO, faça as ações abaixo descritas e em seguida responda: Insira 3, Insira 5, Insira 10, Remova, Insira 8, Insira 20, Remova. Qual elemento está no início da estrutura? Qual o resultado da soma dos elementos da fila? a) 3 e 8 b) 10 e 38 c) 8 e 8 d) 3 e 16 e) 8 e 16 4. Estava um aluno estudando Lista Simplesmente Encadeada quando encontrou em um site a definição dessa struct nodo e de uma função cujo nome você deverá escolher para substituir XXX nas opções abaixo depois que analisar a função, assumindo que um teste foi executado, permitindo que a operação fosse realizada. struct nodo { int info; struct nodo *prox; }; nodo* XXX(nodo *ptr, int valor) { nodo *temp = new nodo; temp->info = valor; temp->prox = ptr; return temp; } a) ListaNo b) RemoveNo c) InsereNoFrente d) InsereNoFim e) BuscaNaLista 5. Um estudante de computação, precisou implementar parte de um jogo de cartões com figuras de animais. Alguns jogadores teriam que jogar os cartões na mesa, enquanto outros deveriam devolver os cartões na sequência inversa à jogada. Ele estudou o mecanismo do jogo e decidiu usar a melhor estrutura de dados na sua implementação. Qual a estrutura escolhida por ele ? a) fila b) matriz c) árvore Estrutura de Dados em C Prof. Ronaldo Candido 2 d) pilha e) lista 6. Com relação as afirmações abaixo, a respeito de lista lineares, assinale as Verdadeiras e as Falsas. Indique a alternativa que representa a sequência correta: ( ) Nas listas encadeadas não precisamos saber previamente o número de elementos a serem armazenados. ( ) Podemos aumentar e diminuir o tamanho da lista encadeada quando quisermos, enquanto que a lista sequencial não. ( ) Quando o número de acessos randômicos a uma área de armazenamento é muito maior que o número de inserções e remoções de elementos armazenados, a organização dessa área de armazenamento por meio de uma lista encadeada resulta em desempenho melhor que o apresentado por organização feita usando uma lista linear. a) V V F b) F V V c) V V V d) F V F e) V F V 7. As estruturas de dados são utilizadas para manter dados ou informações organizadas na memória, o que possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma determinada aplicação. Portanto, marque a opção que representa a melhor estrutura, quando se tem como requisitos principais o acesso aleatório aos dados e alocação destes de forma contínua na memória: a) Pilha Encadeada b) Lista Encadeada c) Fila Sequencial d) Pilha Sequencial e) Lista Sequencial 8. Assinale a alternativa que apresenta a denominação de uma passagem de parâmetro a um procedimento em que tal procedimento de um programa é chamado, recebendo a sua própria cópia dos parâmetros passados: a) Ponteiro b) Referência c) Valor d) Void e) Return 9. Ao executarmos o seguinte código, qual resultado será mostrado na tela? Justifique sua resposta, explicando a finalidade da primeira função. int funcao (int *valor1, int valor2) { *valor1 += 50; valor2 = 200; return valor2; } int main() { int *a, b, c; a = &b; b = 100; c = funcao(a, b); cout << b; cout << c; } R: A primeira função serve para acrescentar 50 ao valor que conste no ponteiro "a", que aponta para o endereço de memória da variável "b" - neste caso, 100 - e define uma variável valor2 com valor de 200. Após a compilação, será mostrado: b = 150 e c = 200. Estrutura de Dados em C Prof. Ronaldo Candido 3 10. Considere uma lista simplesmente encadeada de alunos onde: struct no { int matricula; float media; struct no *link; }; Escreva uma função em linguagem C para exibir a matrícula e a média dos alunos aprovados (média >=6). R: void exibedados(no *dados) { no* aux = dados ; while (aux != NULL) { if (aux->media >=6) cout << aux->matricula << " " << aux->media << endl ; aux = aux->link ; } } Fim do gabarito
Compartilhar