Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fechar Avaliação: » ESTRUTURA DE DADOS Tipo de Avaliação: AV Aluno: Professor: JANE TAVARES ALVAREZ DA SILVA Turma: Nota da Prova: 7,0 Nota de Partic.: 1 Data: 1a Questão (Ref.: 201402768814) Pontos: 0,0 / 1,0 O conceito de ponteiros foi estudado em uma de nossas aulas. Sendo assim, leia atentamente as afirmativas abaixo e assinale a opção correta. I A variável ponteiro não precisa ser declarada. II A variável ponteiro armazena endereço. III Quanto se usa &nomeDaVariávelPonteiro com o comando cout, é exibido o endereço da variável apontada pela variável ponteiro. IV Quando se usa nomeDaVariávelPonteiro com o comando cout, é exibido o endereço da variável ponteiro. V Quando se usa *nomeDaVariávelPonteiro com o comando cout, é exibido o conteúdo da variável apontada pela variável ponteiro. II e V estão corretas I IV e V estão corretas IV e V estão corretas Somente a II está correta I, II e IV estão corretas 2a Questão (Ref.: 201402818562) Pontos: 0,5 / 0,5 Qual estrutura de dados não linear que é utilizada na implementação de Redes de Computadores, na Computação Gráfica, em modelagem de circuitos digitais e etc. E que se caracteriza por apresentar um conjunto de nós e conexões entre eles. Listas Encadeadas. Vetores Grafos Filas Encadeadas Pilhas Encadeadas 3a Questão (Ref.: 201402432527) Pontos: 0,5 / 0,5 As estruturas de dados são utilizadas para manter dados ou informações organizados 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. Lista Sequencial Pilha Encadeada Lista Encadeada Pilha Sequencial Fila Sequencial 4a Questão (Ref.: 201402434932) Pontos: 0,5 / 0,5 Auxiliar = 100 Numero1 = 900 Numero2 = 20 Auxiliar = 101 Numero1 = 900 Numero2 = 20 Auxiliar = 100 Numero1 = 1000 Numero2 = 20 Auxiliar = 111 Numero1 = 1000 Numero2 = 80 Auxiliar = 100 Numero1 = 900 Numero2 = 80 5a Questão (Ref.: 201402843812) Pontos: 0,5 / 0,5 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 aluno { string nome; float nota; }; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [100]; Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo primeiro elemento deste vetor. vet[10]=aluno.5.7; aluno.vet[10].nota=5.7; vet[10].aluno.nota=5.7 ; aluno.vet[10]=5.7; vet[10].nota=5.7; 6a Questão (Ref.: 201402230174) Pontos: 0,5 / 0,5 O resultado do concurso para o cargo de uma empresa está armazenado em um vetor, que contém em cada um de seus elementos o nome e a nota obtida pelo candidato. Deseja-se que este vetor seja ordenado pela nota, em ordem decrescente. Sendo o vetor pequeno (poucos elementos), o programador responsável por desenvolver este algoritmo, escolheu um método de ordenação que executa os seguintes passos: Selecione candidato com maior nota entre todos e troque-o com o candidato que está na primeira posição do vetor; Selecione o segundo maior e troque-o com o candidato que está na segunda posição; Os passos descritos anteriormente são seguidos para a terceira nota, quarta nota e assim por diante até que reste apenas um candidato. O algoritmo utilizado pelo programador trata-se do método de ordenação denominado: Inserção Heapsort Quicksort Bolha Seleção 7a Questão (Ref.: 201402432529) Pontos: 0,5 / 0,5 As pilhas sequenciais são estruturas que guardam a ordem reversa dos dados nelas armazenados, e isto em muitas ocasiões é muito vantajoso. A operação usada para inserir um elemento X numa pilha é conhecida na literatura como PUSH (X). Para remover um elemento de uma pilha a operação é o POP( ). Assim estas duas funções devem implentar o algoritmo LIFO (Last In - First Out ) ou o último a entrar é o primeiro a sair. Sendo assim se aplicarmos as seguintes operações em uma PILHA vazia: PUSH(10),PUSH(5),POP(),PUSH(7),POP(),PUSH(2),POP(),POP( ). Quais valores restarão na pilha? Apenas o 10 10 e 2 Apenas o 2 7 e 2 Nenhum, a pilha estará vazia. 8a Questão (Ref.: 201402470119) Pontos: 1,0 / 1,0 Seja o seguinte exemplo de nodo de uma lista de encadeada: struct nodo{ float valor; string produto; nodo * proximo; }; Sabendo-se que nesta lista o último nó ou nodo possui o campo próximo nulo (null), marque a alternativa que representa corretamente a operação de busca do último nodo, a partir de um ponteiro pt apontado para o primeiro nodo da lista. while(pt->próximo)pt=pt->próximo; while(pt->próximo->proximo)pt=pt->próximo; while(próximo)pt=próximo; while(pt->próximo != null)pt=pt->próximo->proximo; while(pt != null)pt=pt->próximo; 9a Questão (Ref.: 201402251333) Pontos: 1,5 / 1,5 const int TAMMAX = 100; struct TipoLista{ int qtde; // descritor que representa a quantidade de elementos na lista int elemt[TAMMAX]; }; Fundamento no tipo de dado(registro) acima que representa uma implementação de uma lista linear sequencial. Construa um procedimento para adicionar um dado no final da lista. A lista e o dado serão passados por parâmetro. Usar o mecanismo de passagem por referência se for necessário. Resposta: void addFinalLista(TipoLista &lista, int dado) { if(lista.qtde == TAMMAX) { cout<< " Lista esta cheia."; } else{lista.elemt[lista.qtde] = dado; lista.qtde++; cout<< " Dado adicionado."; } } Gabarito: void addFinalLista ( TipoLista &lista, int dado ){ if(lista.qtde == TAMMAX){cout << "Lista Cheia."; } else{ lista.elemt[lista.qtde] = dado; lista.qtde++; cout << "Dado adicionado com sucesso."; } } 10a Questão (Ref.: 201402436690) Pontos: 1,5 / 1,5 Faça uma função em C++ para criar uma lista duplamente encadeada com um nó e armazenar neste nó o valor 100. Note que deverá ser retornado o ponteiro para o nó criado. Considere struct nodupla { int dado; struct *dlink, *elink; }; e o seguinte protótipo : nodupla *cria(); Resposta: nodupla *cria() { nodupla *novo ; novo = new nodupla; novo-> dado = 100; novo -> elink = novo -> dlink = NULL; return novo; } Gabarito: nodupla *cria() { nodupla *novo; novo = new nodupla; novo->dado = 100; novo->elink = novo->dlink = NULL; return novo; } Período de não visualização da prova: desde 12/06/2015 até 25/06/2015.
Compartilhar