Baixe o app para aproveitar ainda mais
Prévia do material em texto
APRESENTANDO AS ESTRUTURAS DE DADOS O espaço necessário para a representação dos dados pode ser alocado à medida que se torne necessário, através da alocação dinâmica. Uma estrutura armazenada através de encadeamento apresenta seus nodos alocados em posições aleatórias na memória, e não lado a lado. Dessa forma, existem várias vantagens no uso de representar os dados por encadeamento. Marque a alternativa correta que apresenta estas vantagens. Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de componentes. Observe o trecho do programa em C++ abaixo e, após, entrar com os valores sugeridos para sua execução assinale a alternativa que representa a resposta final.cin >> a;cin >> b;cin >> c;cin >> d; cout << a;cout << b;cout << c;cout << d; cout << d;cout << c;cout << b;cout << a; Após a impressão dos valores pela ordem teremos uma fila e uma pilha. Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são altamente especializadas, destinando-se a algumas tarefas específicas. Dessa forma a definição de Estrutura de Dados está expressa na alternativa: É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados de modo eficiente. Em relação a estruturas de dados, avalie a correspondência existente entre as estruturas de dados Lineares e Não Lineares com suas respectivas coleções de dados. pilha Lineares , vetor Lineares, grafo Não Lineares e lista Lineares As estruturas de dados são importantes para a programação porque facilitam a pesquisa, pois permitem a ordenação dos dados de forma crescente ou decrescente. Dessa forma, assinale a alternativa correta que define um tipo de dado estruturado. Permitem agregar mais do que um valor em uma variável, existindo uma relação estrutural entre seus elementos. Preciso cadastrar todos os interessados em meu novo curso de programação. Qual a estrutura de dados mais adequada para modelar este problema, visto que não há qualquer preocupação com ordem de chegada ou saída de aluno da turma. Lista 1. A estrutura de dados que melhor representa os diretórios ou pastas de arquivos do computador é a árvore. 2. O termo folha em uma estrutura de dados é usado para um nó sem filhos e que tem grau 0, 3. O grau de uma árvore é definido pelo número de subárvores de um nó. 4. Uma das aplicações da estrutura de dados grafo é a Computação Gráfica. 8- Os irmãos Silva irão viajar por vários países da Europa e por isso, traçaram no mapa o percurso que farão, de cidade a cidade. Qual a estrutura de dados mais adequada para modelar este problema ? Grafo FUNÇÕES Assinale a alternativa que apresenta duas formas de passagem de parâmetros para uma rotina ou função: Por valor e por referência Qual será o valor impresso na tela quando o programa principal for executado? int main() { int n; n = 5; dobro(n); cout << n; return 0; } 5 Considera a FUNÇÃO abaixo: void inverte(int &x, int &y) { int aux = x; x = y; y = aux; } Quais valores serão impressos na tela quando o seguinte programa principal for executado? int main() { int a = 18, b = 28; inverte(a, b); cout << a <<" e "<< b; return 0; } 28 e 18 Na passagem por _referência_, o endereço da variável da função chamadora é passado para a função chamada e, dessa forma, o valor poderá ser alterado, ou não. Ao definirmos uma função, podemos afirmar: Quando nada retorna, o tipo é void As variáveis em programação são utilizadas para armazenar um valor de determinado tipo em um espaço reservado na memória. Em algumas linguagens de programação podemos declarar, ou seja, reservar um espaço na memória, fora do escopo da função principal, e fora do escopo de qualquer outra função. Ao fazer a declaração desta forma estamos declarando uma variável do tipo: Global A declaração de variáveis na programação é o ato de reservar um espaço na memória para poder armazenar valores de um determinado tipo. Essas variáveis podem ser classificadas como variáveis locais e globais. Sendo assim, qual das situações abaixo representa melhor o conceito das variáveis globais. Ao modificar o valor da variável 'X' na função "modifica" seu valor modificado poderá ser apresentado em qualquer outra função do programa. O programa executa perfeitamente independente da ordem das funções já que existem os seus protótipos. ESTRUTURAS HETEROGÊNEAS 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].nota=5.7; Qual das seguintes estruturas de dados é classificada como heterogênea? Registro A armazenagem de dados pode ocorrer temporariamente em uma variável, um vetor ou em uma estrutura chamada Struct na linguagem C e C++. Como se procede a atribuição de valor a um determinado campo de uma estrutura do tipo Struct? Nome da estrutura ponto nome do campo 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 media; }; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [ 10]; Marque a alternativa em que é atribuída de forma correta a media 6.0 para o quarto elemento deste vetor. vet[3].media=6.0; Marque a opção correta, considerando struct Livro { int codigo; float preco; } liv; liv.preco = 30.70; Com relação à struct, é correto afirmar que : Cada elemento da struct é denominado membro ou campo, sendo que a struct pode armazenar elementos de tipos diferentes ou não. ORDENAÇÃO E PESQUISA Entre os diversos algoritmos de pesquisa existentes, certamente os mais famosos são os da pesquisa sequencial e o da pesquisa binária. A busca ou pesquisa sequencial pode ser aplicada em vetores independente destes estarem ordenados, entretanto a busca binária só se aplica em vetores ordenados. Seja o vetor A= {10,35,41,55,69,70,98}, suponha que o número 70 foi pesquisado pelo algoritmo da busca sequencial e também pelo algoritmo da busca binária, ambos algoritmos realizam testes nos elementos do vetor até achar o que procuram ou definirem que o elemento não se encontra no vetor. Sendo assim marque a alternativa que expressa o número de testes realizados pela busca sequencial e o número de testes realizados pela busca binária, respectivamente, até encontrarem o 70. 6 e 2 Qual papel do for mais interno na função ordena abaixo ? void ordena( int n, int v[]) { int i, j, x; for (j = 1; j < n; ++j) { x = v[j]; for (i = j-1; i >= 0 && v[i] > x; --i) v[i+1] = v[i]; v[i+1] = x; } } Encontrar o ponto onde v[j] deve ser inserido em v[0..j-1]. Em uma pesquisa sequencial a lista deve estar? ordenada ou desordenada. Para consultarmos uma estrutura de dados, normalmente, empregamos um tipo de pesquisa de dados. O trecho de programa a seguir refere-se a uma pesquisa por um elemento único (sua primeira ocorrência), em um conjunto de elementos de dados armazenado em uma estrutura de acesso indexado e aleatório. Selecione a opção correspondente ao algoritmo utilizado, no programa, para a referida pesquisa: int busca(float v[], float valor, int n) {int ini = 0, fim = n -1, meio; while (ini <= fim) { meio = (ini + fim)/2; if (v[meio] == valor) return meio; if (valor < v[meio]) fim = meio -1; else ini = meio+1;} return -1;} pesquisa binária Os métodos de ordenação são muito utilizados para facilitar a recuperação posterior de itens ordenados. Existem vários métodos de ordenação, por esse motivo, assinale corretamente a alternativa que mostra o nome do método que utiliza a estratégia de ordenação por trocas de vizinhos e é considerado o método mais simples. Bolha Existem vários tipos de algoritmos para realizar a ordenação dos elementos, onde um algoritmo de ordenação deve rearranjar o vetor de forma a estabelecer uma ordem entre os elementos. Marque a alternativa correta que cita o algoritmo cuja descrição é: "considera cada elemento uma vez inserindo-o em seu lugar correto entre os elementos que já estão em ordem". E o seu passo a passo pode ser descrito como: "o elemento é inserido entre os ordenados movendo-se os elementos maiores que ele uma posição para a direita e posteriormente inserindo-o na posição vaga". Inserção Seja a seguinte função de ordenação: void ordena( int n, int v[]){ int i, j, x; for (j = 1; j < n; ++j) { x = v[j]; for (i = j-1; i >= 0 && v[i] > x; --i) v[i+1] = v[i]; v[i+1] = x; } } Que utiliza o método inserção e realiza uma ordenação crescente nos elementos do vetor v. 8- Analisando o trecho de código a seguir: inicio=0; fim= tamanho - 1; meio=(inicio+fim)/2; while(procura != nomeVetor[meio] && inicio != fim) { if(procura > nomeVetor[meio]) inicio=meio+1; else fim=meio; meio=(inicio+fim)/2; } if(nomeVetor[meio]==procura) cout<<"\n....: "< < outroVetor[meio]<else cout<<"\nDado nao encontrado\n"; Pode-se afirmar que: trata-se da implementação do algoritmo de busca binária. A ESTRUTURA DE DADOS - LISTA Considere uma lista com n livros, em que cada livro é modelado pela struct : struct Livro { string titulo, editora, autor; float preco; }; A função X abaixo void X (Livro v[ ], int &n, Livro L) { v[n] = L; n++; cout << "Operação realizada com sucesso."; } implementa a operação de : Inserção O que acontece ao se inserir uma informação quando já usamos toda a área disponível do vetor (topo = fim)? overflow Analisando o trecho do algoritmo abaixo, Inserção de um elemento em uma estrutura LIFO _Lista Linear Sequencial_ é uma lista linear em que a alocação de memória pode ser estática, e que a forma de armazenamento é contígua ou sequencial na memória. Usamos este tipo de lista quando se tem em mente um tamanho pré-definido, ou seja, quando se sabe até onde a lista pode crescer. As estruturas de dados em programação são muito utilizadas para tornar o acesso aos dados mais eficiente e organizado. A estrutura de dados considerada mais simples e tem como característica apresentar apenas uma dimensão é: Vetor 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 for (int i = 0; i < n; i++) cout << L[i].matricula << " " << L[i].nome << endl; Um órgão público adotou dois sistemas de senhas para atender os cidadãos na ordem de chegada. O sistema I atende os não idosos. O sistema II atende os idosos. Nessa situação: tanto o sistema I, quanto o II, adotam o esquema FIFO de organização de dados. AV 1 Sabendo-se que o método de seleção também é um método de ordenação que baseia seu algoritmo em trocas entre os elementos de um vetor, se submetermos a sequência de inteiros armazenada em um vetor inicialmente na seguinte ordem : 13, 23, 3, 8, Pode-se dizer que quando o menor elemento do vetor alcançar sua posição final, a ordenação apresentada no vetor é: 1,23,3,8,13 A armazenagem de dados pode ocorrer temporariamente em uma variável, um vetor ou em uma estrutura chamada Struct na linguagem C e C++. Como se procede a atribuição de valor a um determinado campo de uma estrutura do tipo Struct? Nome da estrutura ponto nome do campo Assinale a opção certa. Quando não se escreve o protótipo de uma função … É preciso definir a função antes do programa principal. Podemos dizer que estrutura de dados é: O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações. As estruturas de dados podem ser caracterizadas como sendo uma forma organizada de armazenar dados ou informações na memória, de modo a otimizar o acesso a estes. Muitas vezes existem algoritmos de manipulação de dados associados a estas estruturas. Verifique as seguintes sentenças: 1. Filas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados. 2. As Pilhas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados. A ESTRUTURA DE DADOS - PILHA Sabe-se que Push() coloca um elemento na pilha, Pop() remove um elemento da pilha e Top() exibe o elemento que se encontra no topo. Assinale a opção que indica o número que aparecerá após a execução das funções abaixo. Sequência: Push() / Push()/ Pop()/ Push()/Pop()/ Top() Números que deverão ser empilhados nessa ordem: 8/ 15/ 23/ 13 / 18 8 Abaixo temos algumas afirmativas sobre o uso da estrutura pilha de forma estática e sequencial. Leia com muita atenção e assinale a opção correta. Não existe movimentação na pilha quando inserimos ou removemos um elemento. Apenas o valor da variável que controla o topo é alterado. Um dos fatores que limita o crescimento da pilha é a quantidade de memória alocada quando usamos matrizes. Tei Ping, estudante de computação, precisou implementar parte de um jogo que trabalhava com cartas especiais. Cada carta possui um número e uma letra. Alguns jogadores teriam que jogar as cartas na mesa, enquanto outros deveriam devolver as cartas na sequência inversa à jogada. Tei Ping estudou o mecanismo do jogo e decidiu usar a melhor estrutura de dados na sua implementação. Qual a estrutura escolhida ? pilha Existem vários tipos de estruturas de dados do tipo dinâmicas, entretanto, uma estrutura considerada simples são as listas. Pode-se implementar vários tipos de listas, entretanto, a estrutura que apresenta o conceito de LIFO é: Pilha A estrutura de dados Pilha funciona de acordo com o seguinte fundamento básico: O primeiro a entrar é o último a sair. As pilhas sequenciais são estruturas que guardam a ordem reversa dos dados neles armazenados, e isto em muitas ocasiões é muito vantajoso. A operação usada para inserir um elemento X na 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 implementar 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? Nenhum, a pilha está vazia. Na estrutura de dados tipo pilha, há duas operações básicas para empilhamento e desempilhamento. Essas operações são conhecidas como: PUSH e POP. A ESTRUTURA DE DADOS - FILA Ao inserirmos em uma estrutura de dados do tipo fila sequencial os seguintes elementos: A, B, C, D, exatamente nesta ordem. E em seguida realizarmos duas operações consecutivas de remoção na filae imediatamente inserirmos dois novos elementos o X e o W. Podedmos afirmar que se realizarmos uma nova operação de remoção, o elemento que será removido desta fila sera o: C Pode-se citar os seguintes exemplos de aplicação da estrutura fila: Fila de arquivos para impressão: Atendimento de processos requisitados a um sistema operacional. Buffer para gravação de dados em mídia. O tratamento do armazenamento das teclas que estão sendo digitadas antes da tecla enter ser pressionada. Agora analise as seguintes afirmativas:Uma fila guarda a ordem direta em que os elementos foram armazenados. e O algoritmo que é implementado em uma fila é baseado no princípio: " O primeiro a entrar é o primeiro a sair". Assinale a opção que, corretamente, mostra exemplos em que a estrutura de dados fila é usada, de acordo com o critério de inserções e remoções que rege tal estrutura. Fila de arquivos para impressão e buffer para gravação de dados em fila. Considere uma fila simples F de inteiros, do tipo Fila definido abaixo. Tal fila deverá armazenar códigos de agentes de uma firma de espionagem, desde que haja espaço para um novo agente. Assinale a opção que corretamente desenfileira o código de um agente, sabendo que a fila F foi inicializada de acordo com o trecho de código abaixo. struct Fila { in t v[100], inicio, fim; } ; Fila F; F. inicio = 0; F.fim = -1; void desenfileirar(Fila &F) { if (F.inicio > F.fim) cout << "Não há agentes para retirar. " << endl; else { cout << "Removido o agente " << F.v[F.inicio]; F.inicio++; } } Usa-se um vetor para se implementar uma fila sequencial, entretanto se nesta estrutura ocorrer diversas operações de remoção e inserção podemos afirmar que: A estrutura sofrerá do fenômeno chamado esgotamento de memória e logo não poderá mais ser utilizada. A solução é o uso da fila circular. Considere uma fila simples F de inteiros, do tipo Fila definido abaixo. Tal fila deverá armazenar códigos de agentes de uma firma de espionagem, desde que haja espaço para um novo agente. Assinale a opção que corretamente enfileira o código de um agente, sabendo que a fila F foi inicializada de acordo com o trecho de código abaixo. struct Fila { in t v[100], inicio, fim; } ; Fila F; F. inicio = 0; F.fim = -1; void enfileirar(Fila &F, int codigo) { if (F.fim == 99) cout << "Não há espaço na firma para mais agentes. " << endl; else { F.fim++; F.v[F.fim] = codigo; } } O que acontece quando se deseja inserir um elemento em uma FILA que já está cheia? Overflow. ALOCAÇÃO DINÂMICA/LISTAS ENCADEADAS - INTRODUÇÃO Marque a afirmativa que represente uma concatenação em listas. Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante. Em relação às estruturas de dados, aquela que corresponde ao armazenamento em uma lista linear com a posição relativa (não contígua) na memória de dois nós consecutivos da lista é conhecida por alocação: Encadeada. Na área de estrutura de dados, em determinados casos, é necessário utilizar um tipo de dado onde seu valor serve como referência direta a outro valor alocado em outro espaço de memória. Este tipo de dado se chama: Ponteiro Em uma lista linear simplesmente encadeada. Cada nó possui um só ponteiro que referencia o próximo nó da lista. As funções abaixo tem objetivos de: A primeira faz uma busca retornando o endereço do nó ou NULL quando não encontrado, já a segunda insere um novo nó no início da LSE; Marque a afirmativa que representa uma separação. Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da necessidade. Para a criação de uma Fila seqüencial basta iniciar as variáveis de início e final, ou seja, apontá-las para as posições iniciais do vetor. O que alteraria na rotina de inserir se a variável final fosse inicializada com o valor -1 (menos um): Antes da inserção deve-se fazer o incremento da variável final Em algumas situações, principalmente na utilização de listas, há a necessidade de posicionar o ponteiro em determinado local da lista. Dessa forma, analisando o trecho de código abaixo, que mostra uma função, assinale a alternativa correta que descreve o objetivo desta. Sabe-se que o sinal de asterisco (*) sinaliza um ponteiro. void funcao (Nodo **P){ if ( *P != NULL ){ while ( (*P) -> Anterior != NULL ) *P= (*P) -> Anterior; } } Posicionar o ponteiro no início da lista LISTAS ENCADEADAS - FINALIZANDO/PILHAS E FILAS DINÂMICAS Estava um aluno estudando Lista Simplesmente Encadeada quando encontrou em um site a definição da 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 teste foi realizado, 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; } InsereNoFrente Tínhamos declarado um ponteiro de nome ptr e precisávamos construir uma estrutura de repetição que pudesse repetir enquanto o ponteiro não fosse nulo. Observe os trechos abaixo e assinale qual a afirmativa correta. while (ptr !=NULL) e V while (ptr) Assinale a opção correta. Sobre pilha dinâmica podemos afirmar que : usa o critério LIFO e é implementada usando-se listas encadeadas. Sabendo que uma fila encadeada possui seus nós definidos pela : struct no { int x; no *prox; }; Marque a alternativa que representa corretamente a criação ou alocação do nó na sintaxe do C++ para utilização na fila. no *p=new no; Sobre uma estrutura de dados do tipo LIFO, observe as seguintes afirmações: É uma pilha e É uma estrutura onde o primeiro elemento a entrar é o último a sair. Para converter de decimal para binário usamos a estrutura de dados pilha. Assinale a opção que, corretamente, indica as ações corretas para empilhar o resto da divisão gerado no processo de conversão, considerando uma lista simplesmente encadeada. Considere o tipo definido abaixo: struct no { int dado; struct no *link; }; É preciso alocar memória com new, armazenar o resto da divisão do número por 2 no campo dado do novo nó, apontar o link do novo nó para o início da lista e enfim, retornar o ponteiro para o novo nó. LISTAS DUPLAMENTE ENCADEADAS Em uma lista linear duplamente encadeada. Além do campo relativo ao dado, cada nó possui dois ponteiros. O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista, formando um ciclo. Suponha uma listagem mantida com informações sobre um equipamento a ser adquirido por uma empresa. A listagem possui as informações sobre de 10 fornecedores, descritas a seguir: próximo: um ponteiro para o próximo fornecedor da listagem; nome: nome, identificando o fornecedor; valor: preço do equipamento no fornecedor; anterior: um ponteiro para o fornecedor anterior da listagem. Sendo o fornecedor "Z" o quinto elemento desta listagem e "X" e "Y" dois outros fornecedores que não pertencem à listagem, com seus respectivos ponteiros "pZ", "pX" e "pY", considere o trecho de código abaixo. pY->proximo = pX; pX->anterior = pY; pX->proximo = pZ->proximo; pZ->proximo->anterior = pX; pZ->proximo = pY; pY->anterior = pZ; Este trecho de código é usado para inserir na listagem os fornecedores: Y, logo após o Z, e X, logo após o Y. Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para: frente e para trás, apenas. Em relação às estruturas de dados, é correto afirmar: Guardar endereço de memória em "nós",normalmente identificados por previous ou next, é uma característica presente nas listas duplamente encadeadas. Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para frente e para trás, apenas. Em uma lista duplamente encadeada, seus nodos são compostos por campos cujos tipos podem ser de diferentes naturezas, entretanto dois de seus campos devem ser ponteiros para o mesmo tipo do nodo, são estes os ponteiros ant e prox, que apontam, respectivamente, para o nodo anterior e para o próximo nodo. Esta característica permite que a estrutura seja percorrida em ambos os sentidos. Assim analisando as operações a seguir: p->ant->prox=p->prox; p->prox->ant=p->ant; Sendo p um ponteiro que aponta para um dos nodos da lista, pode-se afirmar que: As operações removem o nodo apontado pelo ponteiro p. As listas encadeadas podem ser elaboradas de duas formas utilizando uma técnica de encadeamento simplesmente ou encadeamento duplo. O que difere uma lista simplesmente encadeada de uma lista duplamente encadeada? Em uma lista simplesmente encadeada cada nó aponta para um único nó enquanto a lista duplamente encadeada aponta para mais de um nó. Com relação à lista duplamente encadeada, é correto afirmar que: A lista pode ser percorrida com igual facilidade para a direita ou para a esquerda, pois existem dois ponteiros. AV2 Considere a struct: struct Boneco { int codigo; string nome; float preco; }; e faça uma função em C++, de acordo com o protótipo abaixo, para criar um boneco de código 12345, nome Darth Vader e preço 130,00. Protótipo : Boneco criarBoneco( int cod, string nome, float valorPreco ); Boneco criarBoneco(int cod, string nome, float valorPreco) { Boneco b; b.codigo = cod; b.nome = nome; b. preco = valorPreco; return b; } Uma fila é um tipo especial de Lista Linear em que as inserções são realizadas num extremo, ficando as remoções restritas ao outro. O extremo onde os elementos são inseridos é denominado final da fila, e aquele de onde são removidos é denominado começo da fila. As filas sequenciais, implementadas por vetores, sofrem com as inserções e remoções de dados, pois estas operações levam a um fenômeno chamado esgotamento de memória. Qual a solução para este fenômeno? O esgotamento de memória em filas sequenciais simples é totalmente resolvido com a adoção do conceito de fila circular. Essa abstração garante que a estrutura preserve a mesma quantidade de espaço definida na sua criação, independentemente das operações de inserção e remoção de dados. 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 Com a utilização das estruturas de dados e seus tipos, em algumas situações é imprescindível a criação de funções que façam determinada verificação ou ação nestas estruturas. Dessa forma, analise a função abaixo e marque corretamente a alternativa que descreve as funcionalidades desta. int funcao(float v[], float vl, int n) { for (int i = 0; i < n; i++) if (v[i] == vl) return i; return -1; } Retorna a posição de v se o valor vl foi encontrado. Qual das seguintes estruturas de dados é classificada como heterogênea? Registro Existem vários algoritmos de busca em estruturas de dados, um destes realiza a busca em vetores, e requer acesso aleatório aos elementos desta estrutura e parte do pressuposto de que os dados do vetor estejam ordenados e utiliza a técnica de divisão e conquista comparando o elemento desejado com o elemento do meio do vetor. Esta técnica ainda verifica se o elemento do meio do vetor for o desejado, a busca termina. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor. O algoritmo que utiliza esta metodologia é: Pesquisa binária Considere uma lista com n livros, em que cada livro é modelado pela struct : struct Livro { string titulo, editora, autor; float preco; }; A função X abaixo void X (Livro v[ ], int &n, Livro L) { v[n] = L; n++; cout << "Operação realizada com sucesso."; } implementa a operação de : Inserção Respeitando as ordens de inserção e de retirada dos dados, uma estrutura de: pilha é também denominada LIFO ou FILO. As structs (estruturas) são utilizadas para modelar os nodos de estruturas dinâmicas como, por exemplo, as listas encadeadas, seja o seguinte exemplo de nodo de uma lista de produtos: struct nodo{ float valor; string produto; nodo * proximo; }; Suponha que um determinado ponteiro pt esteja apontando para um nodo desta lista, e que se queira alterar o conteúdo do campo valor deste nodo, que está sendo apontado por pt, para 5.60. Marque a alternativa que corretamente possibilita esta operação: pt->valor=5.60; Sobre uma estrutura de dados do tipo LIFO, observe as seguintes afirmações: É uma pilha. , Pode ser uma fila com prioridades e É uma estrutura onde o primeiro elemento a entrar é o último a sair. http://estacio.webaula.com.br/salaframe.asp?curso=1937&turma=634317&topico=810953 http://estacio.webaula.com.br/salaframe.asp?curso=1937&turma=634317&topico=810954
Compartilhar