Buscar

AV_Estrutura de Dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1a Questão (Ref.: 201303061506) Pontos: 0,8 / 0,8 
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 é: 
 
 
 Variável 
 Vetor 
 Registro 
 Função 
 Matriz 
 
 
 
 2a Questão (Ref.: 201303061324) Pontos: 0,8 / 0,8 
Marque a afirmativa que represente uma separação. 
 
 Intercalar a ordem dos dados da lista do final para o início, atualizando a lista. 
 Organizar os dados da lista em ordem crescente ou decrescente. 
 Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, 
depende da necessidade. 
 Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante. 
 Alterar a ordem dos dados da lista do final para o início, atualizando a lista. 
 
 
 
 3a Questão (Ref.: 201303089668) Pontos: 0,0 / 0,8 
Considere duas listas simplesmente encadeadas circulares e não vazias de inteiros e 
o tipo 
 struct no { 
 int dado; 
 struct no *link; 
 }; 
Faça uma função para criar uma lista simplesmente encadeada não circular que seja 
constituída pelos elementos comuns às duas listas passadas. 
Protótipo : no *inter(no *x, no*y); 
 
 
Resposta: 
 
 
Gabarito: no *insere_frente(no *p, int valor) { no *q; q = new no; q->dado = valor; q->link = p; 
return q; } no *inter(no *x, no *y) { no *t, *r, *q; t = x; q = NULL; do { r = y; do { if (t->dado == r-
>dado) q = insere_frente(q,t->dado); r = r->link; } while (r != y); t = t->link; } while (t != x); 
return q; } 
 
 
 
 4a Questão (Ref.: 201303061505) Pontos: 0,8 / 0,8 
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 
 Constante 
 Local 
 Inteiro 
 Real 
 
 
 
 5a Questão (Ref.: 201303061174) Pontos: 0,8 / 0,8 
Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada". 
 
 Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos. 
 Consiste em fazer uma busca em um vetor desordenado, dividindo o espaço de busca ao meio e 
verificando se o dado está no meio ou, antes do meio ou depois do meio. 
 É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente. 
 Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e 
verificando se o dado está no meio ou, antes do meio ou depois do meio. 
 Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de 
elementos. 
 
 
 
 6a Questão (Ref.: 201303082540) DESCARTADA 
Se a e b são variáveis inteiras (int) e p1 e p2 ponteiros para int, quais das seguintes expressões de atribuição 
está errada? 
 
 a = (*p1 + *p2)/b+1; 
 p1 = &a; 
 b = *p2; 
 *p2 = &b; 
 *p2 = *p1; 
 
 
 
 7a Questão (Ref.: 201303061494) Pontos: 0,0 / 0,8 
Analisando a seqüência do código abaixo, pode se afirmar que se trata da: for (int i = topo-1; i>=0 ; i--) cout 
<< " "<< v[i] <<" "< 
 
 Exibição de todos os elementos armazenados em uma Fila na ordem de entrada. 
 Exibição de todos os elementos armazenados em uma Fila na ordem inversa da entrada. 
 Exibição de todos os elementos armazenados em uma Pilha na ordem de entrada. 
 Exibição de todos os elementos armazenados em uma Fila na ordem decrescente. 
 Exibição de todos os elementos armazenados em uma Pilha na ordem inversa da entrada. 
 
 
 
 8a Questão (Ref.: 201303061520) Pontos: 0,0 / 0,8 
Os métodos de ordenação são muito utilizados em estruturas de dados para facilitar a busca e a recuperação 
posterior de itens de conjuntos ordenados. Existem vários métodos de ordenação, por este motivo, marque 
corretamente a alternativa que apresenta o código do método de seleção. 
 
 int ordena(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; 
} 
 int ordena(float v[], float valor, int n) { 
 int ini = 0, fim = n-1, meio; 
 while (ini >= fim){ 
 meio = ini/2; 
 if (v[meio] == valor) 
 return meio; 
 if (valor < v[meio]) 
 fim = meio -1; 
 else 
 ini = meio+1; 
} 
 int ordena(float v[], float valor, int n){ 
 for (int i = 0; i < n; i++) 
 if (v[i] == valor) 
 return i; 
 return -1; 
} 
 void ordena (int v[], int n){ 
 int i, j, aux; 
 for (j = 1; j < n; j++) 
 for (i=j; i > 0 && v[i-1]> v[i]; i--){ 
 aux = v[i-1]; 
 v[i-1] = v[i]; 
 v[i] = aux; 
 } 
} 
 void ordena(int v[], int n){ 
int i, j, menor, aux; 
for (j = 0; j < n-1; j++) { 
 for (i = j+1; i < n; i++) { 
 if (v[i] < v[j]) { 
 aux = v[j]; 
 v[j] = v[i]; 
 v[i] = aux; 
 } 
 } 
} 
} 
 
 
 
 9a Questão (Ref.: 201303061528) Pontos: 0,8 / 0,8 
Analisando a figura abaixo, marque a alternativa correta que apresenta o tipo de estrutura de dados utilizado. 
 
 
 Fila 
 Matriz 
 Pilha 
 Struct 
 Hash 
 
 
 
 10a Questão (Ref.: 201303061516) Pontos: 0,8 / 0,8 
Os registros também conhecidos como estruturas, são estruturas de dados do tipo heterogêneo, ou seja, 
permitem que valores de tipos diferentes possam ser armazenados em uma mesma estrutura. Analisando a 
estrutura abaixo, a mesma pode ser utilizada para qual tipo de estrutura de ordenação, marque a alternativa 
correta. 
struct nomeRegistro{ 
 int info; 
 struct nomeRegistro* ant; 
 struct nomeRegistro* prox; 
}; 
typedef struct nomeRegistro NOMEREGISTRO; 
 
 Pilha 
 Lista encadeada 
 Matriz 
 Lista duplamente encadeada 
 Fila 
 
 
 
 11a Questão (Ref.: 201303091954) Pontos: 0,8 / 0,8 
Qual a diferença entre pilha e fila? 
 
 
Resposta: Pilha: Estrutura de dados em que os elementos são alocados da maneira LIFO (Last In First Out - 
Último que Entra é o Primeiro que Sai); as entradas de elementos são realizadas por apenas 1 (uma) 
extremidade. Fila: Estrutura de dados em que os elementos são alocados da maneira FIFO (First In First Out - 
Primeiro que Entra é o Primeiro que Sai); as entradas de elementos podem ser realizadas pelas 2 (duas) 
extremidades. 
 
 
Gabarito: Pilha se caracteriza por ser uma estrutura de dados que são inseridos e retirados numa 
sequencia semelhante as anilhas de alteres, isto é, usa a lógica LIFO. Já uma fila se caracteriza por 
ser um estrutura semelhante a fila de banco, isto é, os dados vão chegando e sendo processados e 
retirados da estrutura. Essa lógica é chamada de FIFO.

Outros materiais