Buscar

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 38 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

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 6, do total de 38 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

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 9, do total de 38 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

Prévia do material em texto

AULA 1
1.
Qual a diferença entre dado e informação?
Você acertou!
A.
Dados não têm significado de forma isolada e servem de base para a informação. A informação
é fruto do processamento dos dados.
Os dados não têm significado relevante de maneira isolada e são considerados fundamentos da
informação. A informação consiste na ordenação e na organização dos dados, para que seja
possível compreender o seu significado, ou seja, ela é fruto do processamento dos dados.
2.
O que é um índice?
Resposta correta.
B.
É uma referência utilizada normalmente em estrutura de dados, que facilita o trabalho quando é
feita uma consulta que envolve vários dados.
Um índice é um tipo de referência, normalmente utilizado quando se trabalha com estruturas de
dados, que serve para otimizar localizações de registros em consultas com muitos dados.
3.
Qual a diferença entre estruturas de dados homogêneos e heterogêneos?
Você acertou!
E.
Estruturas de dados homogêneas armazenam o mesmo tipo de dados, e estruturas
heterogêneas armazenam tipos de dados diferentes.
Quando uma estrutura de dados armazena elementos de tipos diferentes, é dito que é uma
estrutura de dados heterogênea. Já uma estrutura de dados que armazene somente um tipo de
dados é conhecida, então, como dados homogêneos. Os dados homogêneos são representados
pelos vetores, ou estruturas de dados unidimensionais, e pelas matrizes, estruturas de dados
bidimensionais.
4.
Quais são as estruturas de dados que representam o tipo de estrutura de dados
homogêneos?
Você acertou!
D.
Vetores e matrizes.
As estruturas de dados homogêneos são representadas pelos vetores, ou estruturas de dados
unidimensionais, e pelas matrizes, estruturas de dados bidimensionais.
5.
Por que um vetor é uma estrutura unidimensional, e uma matriz é uma estrutura
bidimensional?
Resposta correta.
C.
Porque o vetor armazena dados de forma sequencial, e a matriz armazena dados dispostos em
linhas e colunas.
O vetor é uma estrutura unidimensional porque armazena dados em uma dimensão só, de forma
sequencial. A matriz é considerada uma estrutura bidimensional porque é formada de vários
vetores, ou seja, armazena dados em linhas e colunas.
AULA 2
1.
Assinale a alternativa que representa corretamente o conceito de registro.
Você acertou!
A.
É um tipo de dado construído, que pode ser composto por variáveis de diferentes tipos.
É um agrupamento de variáveis relacionadas entre si, que constitui um tipo de dado composto e
heterogêneo, formado por variáveis de diferentes tipos, que podem ser primitivas ou de outros
registros. Um registro não tem índice como um vetor.
2.
Considerando a seguinte estrutura que representa um registro de livro na linguagem C,
marque a alternativa que declara corretamente um vetor 1000 posições deste registro.
typedef struct {
char isbn;
char titulo[50];
char autor[50]
float preco;
int paginas;
} Livro;
Você acertou!
C.
Livro livro[1000];
Na linguagem C, é preciso informar o tipo de dado da variável antes de seu nome. Sendo “Livro”
um tipo de dado composto construído, a forma correta de declarar um vetor de “Livro” é Livro
livro[1000], em que “livro” (com letras minúsculas) pode ser qualquer expressão válida para o
nome de uma variável.
3.
Considerando um vetor de registros de uma estrutura nomeada como “aluno”, que tem o
atributo “nome” como uma variável do registro, indique a alternativa que representa a
forma correta de atribuição de “Joao” para essa variável na posição 1 do vetor, com base
na linguagem C.
typedef struct {
long matricula;
char nome[50];
int turma;
} aluno;
aluno a1[100];
Você acertou!
C.
strcpy(a1[1].nome, “Joao”);
A forma correta, com base na linguagem C, para atualizar a variável “nome” do vetor de
registros “a1” na posição 1 é strcpy(a1[1].nome, “Joao”). O indicador do vetor deve ficar ao lado
da variável do vetor “a1” e não da variável que pertence ao registro “nome”. O uso da função
strcpy é necessário porque a variável "nome" é uma cadeia de caracteres e não pode ser
atribuída diretamente a uma variável do tipo array de char.
4.
Analise o seguinte código baseado na linguagem C e marque a alternativa que representa
o objetivo da função xxxxx.
typedef struct {
long matricula;
int turma;
} Aluno;
Aluno aluno[100];
void xxxxx(long matricula, int turma) {
int i;
for (i= 0; i < 100; i++) {
if (aluno[i].matricula == matricula)
aluno[i].turma= turma;
return 1;
}
}
Return 0;
}
Você acertou!
B.
Alterar um registro a partir da matrícula que é passada por parâmetro.
A função apresentada visa alterar o registro de um aluno a partir de sua busca no vetor de
registros com base na matrícula que é passada por parâmetro. A função retorna 1 se houve a
alteração e 0 caso o registro não seja encontrado no vetor.
5.
Sendo um vetor de registros uma estrutura fixa, que reserva espaço na memória para a
quantidade de elementos informados na sua declaração, o que é preciso fazer antes de
utilizá-lo, visando manter a confiabilidade de dados para incluir, alterar e excluir
registros?
Você acertou!
A.
Inicializar o vetor com valores padrões, que devem ser diferentes dos dados que serão
armazenados.
Para um cadastro de vetor de registros, é recomendado inicializar todas as posições com
valores padronizados que sejam diferentes dos dados que serão armazenados. Isso faz com
que o sistema possa identificar quais posições estão livres para incluir dados e quais estão
ocupadas para que possam ser alteradas. Além disso, faz com que o sistema atue na limpeza
de possíveis sujeiras de memória que possam ocupar alguma posição no momento de sua
criação.
AULA 3
1.
De acordo com a imagem, quais os valores de x e y ao fim da execução de código?
Resposta correta.
B.
x= 3 e y = 4
Como armazena o conteúdo da variável apontada por p, x começa com 0 assim como y. Logo
em seguida, é atribuído o valor 4 à variável x e y é modificado, pois o conteúdo apontado por p é
incrementado, linha 10. Ao se decrementar o valor de x e fazer com que o conteúdo apontado
da variável e apontada por p receba o valor existente acrescido do valor de x, chegamos aos
valores x= 3 e y =4.
2- Qual o erro existente no seguinte código-fonte? 
Você acertou!
B.
Na linha 7, não pode ser atribuído a um ponteiro o valor de uma variável a.
A variável b é um ponteiro, portanto ela deve armazenar o endereço da variável a, com a
seguinte instrução b=&a.
3 - O seguinte código deve alocar dinamicamente o espaço para um vetor de inteiros. A
quantidade de elementos do vetor é definida pela variável num_componentes.
Qual instrução deve ser inserida na linha 13 para que esse completo esteja correto?
Você acertou!
E.
ptr = (int*) malloc(num_componentes * sizeof(int));
Para alocar de forma dinâmica a memória para um vetor cujo tamanho é definido por uma
variável, é possível usar a função malloc que tem a seguinte sintaxe:
ponteiro= (tipo*)malloc(sizeof(tipo))
Como são necessários num_componentes espaços, basta adicionar essa variável e multiplicar
pelo tamanho do tipo.
4- Assinale a opção correspondente ao resultado que será impresso para a variável valor,
após a execução do trecho de código a seguir:
Você acertou!
A.
Valor : 2007
Valor : 2008
Na linha 10, a variável a, que é um ponteiro, recebe o endereço da primeira posição do vetor.
Na linha 11, são incrementadas duas posições do vetor, ou seja, agora o ano passa a apontar
para a segunda posição do vetor.
Na linha 13 é mostrado o conteúdo da variável apontada por esse ponteiro que é 2007, na linha
13.
Na linha 14, o conteúdo da variável apontada por a é incremetnad, portanto, é impresso 2008.
5- Qual o resultado da execução do programa a seguir?
Você acertou!
B.
25 25 50
A varável pa é um ponteiro para inteiro que armazena o endereço da variável a. A variável b
recebe o valor armazenado na variável apontada por pa acrescida do valor a. Assim a saída
desse código é 25 25 50 .
AULA 4
1.
Considere o seguinte algoritmo em pseudocódigo e selecione a alternativa falsa.
algoritmo "oquefaz"
var
valor : inteiroprocedimento faz(N : inteiro)
inicio
se (N=0) entao
escreval(N)
senao
faz(N-1)
escreval(N)
fimse
fimprocedimento
inicio
repita
escreva("Digite: ")
leia(valor)
ate valor >= 0
faz(valor)
fimalgoritmo
Você acertou!
D.
O procedimento "faz" escreve o valor de N quando esse é igual a zero ou escreve o valor de N-1
quando N for maior que zero.
O procedimento "faz" é recursivo. Conforme o valor de N que for passado como parâmetro, ele
chama a si próprio diversas vezes, sendo que, a cada chamada, é reduzido o valor de N.
Quando N chega a zero, escreve o valor e começa a retornar das chamadas recursivas.
2.
Considere a implementação e o funcionamento de subprogramas (rotinas) recursivos.
Analise as afirmativas a seguir e assinale a falsa.
Resposta correta.
E.
Subprogramas recursivos não precisam ter condição de parada.
Todo subprograma recursivo precisa ter uma condição de parada, pois ficará autochamando-se
infinitamente até ocorrer stack overflow.
3.
Analise as alternativas a seguir e selecione a que implementa corretamente um
subprograma recursivo que calcula o somatório dos números inteiros no intervalo [1,N].
Você acertou!
C.
funcao Y(X :inteiro): inteiro
inicio
se X = 1 entao
retorne (1)
senao
retorne(X + Y(X-1))
fimse
fimfuncao
A função Y recebe um valor inteiro; quando esse valor é 1, ela retorna 1, se não, ela retorna o
valor de X + Y(X-1), calculando recursivamente o somatório.
4.
Analise o seguinte subprograma em pseudocódigo:
funcao M(X :inteiro): inteiro
inicio
se (X = 0) ou (X = 1) entao
retorne (1)
senao
retorne(M(X-1)+M(X-2))
fimse
fimfuncao
As alternativas a seguir apresentam chamadas da função M e indicam o retorno conforme
o valor passado como parâmetro. Selecione a alternativa correta.
Você acertou!
A.
 M(5) retornará o valor 8.
M(7) = M(6) + M(5) = 21
M(6) = M(5) + M(4) = 13
M(5) = M(4) + M(3) = 8
M(4) = M(3) + M(2) = 5
M(3) = M(2) + M(1) = 3
M(2) = M(1) + M(0) = 2
M(1) = 1
M(0) = 1
5.
Analise o seguinte algoritmo em pseudocódigo:
algoritmo "oquefaz"
var
valor : inteiro
funcao calcula(N : inteiro):real
inicio
se (N = 0) entao
retorne(1)
senao
retorne((N / (N-1)) + calcula(N-1))
fimse
fimfuncao
inicio
escreva("Digite Valor: ")
leia(valor)
escreval("Serie= ",serie(valor))
fimalgoritmo
Considere que foi digitado 10 para a variável valor. Selecione a alternativa que representa
corretamente a série implementada pela função calcula(valor).
Resposta correta.
C.
Série = (1/1) + (2/1) + (3/2) + (4/3) + (5/4) + (6/5) + (7/6) + (8/7) + (9/8) + (10/9).
Essa alternativa representa a série calculada pela função calcula quando o conteúdo da variável
valor for 10.
AULA 5
1.
São métodos de ordenação simples que realizam o mesmo número de comparações,
porém o primeiro realiza mais trocas que o segundo:
Resposta correta.
A.
Bubblesort e Selectionsort.
Os métodos de ordenação que realizam a mesma quantidade de comparações são Bubblesort e
Selectionsort, sendo que o Bubblesort realiza mais trocas. Já o método Insertionsort realiza
menos comparações.
2.
Em relação ao método Bubblesort, assinale a alternativa correta:
Você acertou!
C.
Realiza várias comparações e várias trocas a cada fase iterativa.
O método Bubblesort realiza várias comparações e várias trocas a cada fase iterativa. O número
de comparações não muda se o vetor estiver pré-ordenado, sendo ideal para vetores pequenos.
3.
Assinale a alternativa que explica corretamente a técnica utilizada pelo método
Selectionsort:
Você acertou!
D.
Realiza várias comparações e apenas uma troca a cada fase iterativa.
O método Selectionsort realiza várias comparações e apenas uma troca a cada fase iterativa.
Sua técnica não reposiciona os elementos, apenas troca a posição de dois elementos,
colocando o menor no lugar do maior, já na posição correta de classificação. Seu desempenho é
melhor que o do Bubblesort porque realiza menos trocas e não pode ser considerado como uma
variação do método bolha, visto que utiliza outra técnica.
4.
Assinale a alternativa que representa as características do método de ordenação
Insertionsort:
Você acertou!
B.
Apresenta melhor desempenho que o Bubblesort e o Selectionsort em vetores pré-ordenados.
5.
Indique a que método de ordenação simples se refere a seguinte explicação: "realiza a
comparação de cada elemento do vetor com todos os elementos posteriores, com o
objetivo de encontrar o menor valor para realizar apenas uma troca de posição a cada
fase de iteração.
Você acertou!
C.
Selectionsort.
Os métodos de ordenação simples são Bubblesort, Selectionsort e Insertionsort. Contudo, o
método Selectionsort é que realiza a ordenação de um vetor pela comparação de cada elemento
com os demais subsequentes, com o objetivo de realizar apenas uma troca a cada fase iterativa.
AULA 6
1.
Que algoritmo de ordenação de dados utiliza um pivô, que é selecionado para dividir o
vetor em dois outros?
Você acertou!
B.
Quicksort.
O funcionamento do Quicksort envolve basicamente a seleção de um pivô, e o vetor inicial
passa a ser dividido em duas partições, separando todos os elementos maiores ou iguais ao
pivô de um lado, ficando do outro lado os elementos menores que o pivô.
2.
Em que consiste a estratégia da divisão e conquista?
Você acertou!
A.
Dividir um problema maior em vários problemas menores, que serão resolvidos até que o
problema inicial possa ser solucionado.
A estratégia da divisão e conquista consiste em um projeto algorítmico que envolve dividir um
problema maior, recursivamente, em outros problemas menores e solucioná-los até que o
problema inicial possa ser resolvido.
3.
Por que o algoritmo Mergesort tem esse nome?
Você acertou!
E.
Por causa da mistura dos dois últimos vetores auxiliares, que é feita após o resultado da divisão
do vetor inicial em pares e da sua ordenação, de forma recursiva, e da sua reunião em vetores
auxiliares.
O Mergesort, que significa ordenação por mistura, é chamado assim porque divide o vetor inicial
em pares e os ordena, recursivamente, até quando for possível. Depois disso, ele começa a
agrupá-los novamente, até que os dois últimos vetores são misturados para formar o vetor de
resposta.
4.
O que significa a recursividade na Ciência da Computação?
Você acertou!
C.
Recursividade é a característica que uma função possui para fazer a chamada para si mesma.
A recursividade é a característica que uma função, método ou sub-rotina possui para fazer a
chamada para si mesma. É um artifício comum dos algoritmos baseados na estratégia de
divisão e conquista, onde se divide um problema em problemas menores para poder resolvê-lo.
5.
Os métodos de ordenação direta podem ser divididos em métodos simples e eficientes.
Qual a diferença entre eles?
Você acertou!
E.
Os métodos simples são melhores para ordenar listas pequenas e fazem mais comparações
para ordenar o vetor. Já os métodos eficientes são melhores para ordenar listas grandes e
fazem menos comparações para ordenar o vetor.
Os métodos de ordenação simples são mais utilizados quando a lista de elementos a ser
ordenada é pequena. Eles utilizam mais comparações e possuem códigos de programação
menores, mais simplificados e mais fáceis de entender. O Selection Sort, o Insertion Sort e o
Bubble Sort são exemplos de métodos simples. Já os métodos eficientes são mais
recomendados quando a lista de elementos a ser ordenada é grande. Eles utilizam menos
comparações mas, em compensação, precisam de um código de programação maior, mais
complexo e mais detalhado para funcionar. O Quicksort e o Mergesort são exemplos e métodos
eficientes.
AULA 7
1.
No contexto estrutura de dados, pilha é:
Você acertou!
C.
Um tipo de lista linear em que o último elemento a ser inserido é o primeiro retirado.
As pilhas são estruturas baseadas no princípio LIFO (last in, first out), no qual os dados que
foram inseridos por último na pilha serão os primeiros removidos.
2.
Em estruturas de dados, é encontrada a estrutura pilha. Avalie as assertivas abaixo e
identifique a alternativa correta.
I. Para excluir (remover ou desempilhar)o elemento da pilha, basta excluir o elemento
para o qual aponta o ponteiro de início. Esta operação permite recuperar o dado no topo
da pilha, e também removê-lo.
II. Uma das possíveis utilizações de uma pilha é a implementação da sequência de
desfazer (Ctrl + Z) de um editor de texto.
III. Na estrutura pilha, o último elemento a entrar também é o último a sair.
IV. Na pilha, as operações de exclusão e inclusão são realizadas na mesma extremidade,
chamada topo.
V. As operações de exclusão e inclusão são realizadas em qualquer parte da pilha.
Assinale a alternativa correta:
Você acertou!
B.
Somente a II e IV
Uma das possíveis utilizações da pilha é a implementação da sequência de desfazer (Ctrl + Z)
de um editor de texto.
 Na pilha, as operações de exclusão e inclusão são realizadas na mesma extremidade,
chamada topo.
3.
Assinale a opção correta relativa às operações básicas suportadas por pilhas.
Você acertou!
B.
PUSH coloca um elemento no topo da pilha.
Em estruturas de dados do tipo pilha, os elementos são colocados sempre no topo.
4. Considere os estados (inicial e final) da pilha a seguir, na qual top corresponde ao seu
topo.
Para atingir o estado final dessa pilha, deve-se usar a seguinte sequência de operações
básicas:
Você acertou!
A.
pop(), pop(), push(9), push(3).
Primeiro foram removidos os dois últimos elementos da pilha, usando pop() e pop(), e após
foram inseridos os números 9 e 3, usando o comando PUSH.
5.
Considere que os itens W, X, Y, Z e K foram inseridos nessa ordem em uma pilha.
Necessariamente, o último elemento é:
Você acertou!
E.
K.
O último elemento é K, pois foi o último a ser inserido, permanecendo no topo.
AULA 8
1.
Uma das estrutudas de dados utilizadas na programação de computadores funciona
conforme o princípio conhecido como FIFO - First In First Out e LIFO - Last In First Out.
Essas estruturas são denominadas, respectivamente:
Resposta correta.
E.
Fila e pilha.
Essas estruturas são denominadas, respectivamente, fila e pilha.
2.
Suponha o seguinte cenário: Uma fila FIFO foi criada, e um nodo foi inserido a cada
minuto, chegando a um total de dez elementos (dez minutos depois da criação da fila). A
partir desse momento, decide-se remover um nodo. Qual deles será removido?
Você acertou!
A.
O primeiro (inserido no minuto 1).
O primeiro inserido, pois a fila utiliza FIFO: o primeiro a entrar é o primeiro a sair.
3.
Considerando os conceitos de estrutura de dados, analise as afirmativas a seguir e
marque verdadeiro (V) ou falso (F):
( ) As filas são utilizadas para controlar o acesso de arquivos que concorrem a
uma única impressora.
( ) A pilha é uma estrutura de dados baseada no princípio LIFO, no qual os dados
que foram inseridos primeiro na pilha serão os últimos a serem removidos.
( ) Para gerenciar processos, sistemas operacionais utilizam filas para organizar
processos que aguardam processamento.
Você acertou!
A.
V, V, V
Filas são utilizadas no arquivo de Buffer da Impressora, pilhas são baseadas em LIFO, e
sistemas operacionais utilizam as filas para gerenciar processos que aguardam
processador.
4.
Um conjunto ordenado de itens a partir do qual podem ser eliminados itens em uma
extremidade e no qual podem ser inseridos itens na outra extremindade, é denominado:
Você acertou!
A.
Filas
É denominado Filas, pois em Pilhas a manipulação de itens acontece apenas no Topo.
5.
Estrutura de Dados básicas como Fila são usadas em uma gama variada de aplicações
computacionais. Marque a alternativa correta quanto a estas aplicações.
Resposta correta.
E.
Buffer para gravação de dados em mídia.
Buffer para gravação de dados em mídia utiliza de Filas, para manter a organização dos dados.
AULA 9
1.
Baseando-se no conceito de lista estática, marque a alternativa correta em relação à
inclusão de elementos.
Resposta correta.
C.
A inclusão de elementos pode ocorrer em qualquer posição da lista.
Toda lista estática tem um limite máximo de itens, normalmente definido por um array. A
inclusão pode ocorrer em qualquer posição da lista, mesmo uma que esteja ocupada. Nesse
caso, deverá haver um reposicionamento dos itens para que nenhuma posição fique vazia.
2.
Em relação às listas estáticas, leia as alternativas a seguir e indique a correta.
Você acertou!
B.
Os itens estão dispostos em uma ordem sequencial, sem conter elementos nulos.
Listas estáticas contêm um número fixo de elementos e os dispõem em uma ordem sequencial,
não podendo ser redimensionadas em tempo de execução nem conter elementos nulos. São
indicadas para listas pequenas, com poucos itens, e o custo computacional de acesso direto a
determinada posição é uma vantagem, pois a lista é indexada.
3.
Marque a alternativa correta em relação à interface de uma lista estática.
Você acertou!
C.
Não existe uma definição de quais métodos devem ser implementados, embora alguns sejam
esperados.
Não existe uma definição de quais métodos devem ser implementados em uma lista estática,
porém algumas funções são esperadas, como incluir e excluir itens, verificar se está cheia ou
vazia e imprimir a relação de itens, sendo que o comportamento dessas funções pode ser
diferente de pilhas e filas. No entanto, é uma característica importante a separação da estrutura
de dados de sua implementação, uma vez que o programador não precisa conhecer os detalhes
da implementação.
4.
Analise o seguinte pseudocódigo baseado na linguagem C e marque a alternativa que
representa o significado da função xxxxx.
typedef struct {
int dado[50]; //array de itens da lista
int n; //total de elementos da lista
} Lista;
int xxxxx (Lista *L, int pos){
for (int i= pos; i <= (L->n)-1; i++)
L->dado[i-1]= L->dado[i];
(L->n)--;
}
Você acertou!
E.
Remove o item da lista de posição igual a "pos" e reposiciona os demais.
A função apresentada remove o item da lista de posição igual a “pos”, que é passada como
segundo parâmetro, e realiza o reposicionamento dos demais itens, bem como decrementa o
total de itens da lista.
5.
Analise o seguinte código baseado na linguagem C indique a alternativa que o define.
typedef struct {
unsigned long CPF;
char Ativo;
} Documento;
typedef struct {
Documento Cadastro[1000];
int n;
} Pessoas;
Pessoas lista;
Documento doc;
Resposta correta.
A.
Define uma lista para armazenar 1000 elementos do tipo Documento.
O código apresentado descreve uma lista do tipo Pessoas que armazena um TAD declarado
como Documento. Isso significa que a lista é um array de 1000 elementos e que, em cada
posição, será armazenado um item do tipo Documento, composto pelo número do CPF e da
informação de atividade.
AULA 10
1.
Em relação às listas dinâmicas com encadeamento simples, leia as alternativas a seguir e
indique a correta:
Resposta correta.
D.
Alocam apenas a memória necessária para armazenar os elementos atuais da
lista",serif">","sans-serif"">.
Em uma lista dinâmica com encadeamento simples, cada elemento aponta apenas para o
elemento posterior da cadeia, cuja pesquisa é sequencial e em um único sentido, não permitindo
acesso direto a determinado componente, sem ter que percorrer a lista a partir do início. Por ser
dinâmica, aloca apenas a memória necessária para armazenar os itens atuais da lista. 
2.
Baseando-se no conceito de lista dinâmica encadeada simples, marque a alternativa
correta:
Você acertou!
B.
Cada elemento possui um atributo do tipo ponteiro da lista, usado para referenciar o próximo
elemento.
Uma lista dinâmica encadeada simples não possui um limite máximo de itens, pois a alocação é
feita em tempo de execução. Deve, ainda, permitir a inclusão em qualquer posição da lista, tanto
para estruturas como para tipos primitivos, que farão a nova ligação a fim de manter a lista
encadeada. O último item da lista deve apontar para NULL e cada elemento tem um atributo do
tipo ponteiro da lista, que referencia o próximo elemento.
3.
Analise o seguinte método e marque a alternativa que representa o seu significado:
 ",serif">"">struct Nodo{
",serif">""> int valor;
",serif">""> structNodo *p;
",serif">"">};
",serif">"">typedef struct Nodo node;
",serif">"">void metodo(node *lista, valor) {
",serif">"">node *n= (node *) malloc(sizeof(node));
",serif">"">n->valor= valor;
",serif">""> n->p= lista->p;
",serif">""> lista->p= n;
",serif">"">}
Você acertou!
A.
Adiciona um elemento no início da lista.
O método descrito aloca memória para um novo elemento. Na sequência, faz o novo
componente apontar para o primeiro da lista e este para o novo. Portanto, adiciona um elemento
no início da lista.
4.
Analise o seguinte método e selecione a opção que representa o seu objetivo:
 ",serif">"">struct Nodo{
",serif">""> int valor;
",serif">""> struct Nodo *p;
",serif">"">};
",serif">"">typedef struct Nodo node;
",serif">"">void metodo(node *lista) {
",serif">""> node *pr, *at;
",serif">"">at= lista;
",serif">""> while(at->p != NULL){
",serif">""> pr= at->p;
",serif">""> at->p= NULL;
",serif">"">free(at);
",serif">""> at= pr;
",serif">""> }
",serif">"">}
Você acertou!
E.
Exclui todos os elementos da lista.
O método descrito realiza uma varredura na lista e exclui cada elemento a partir da primeira
posição. Portanto, exclui todos os elementos da lista.
5.
Analise o seguinte método e marque a alternativa que representa o seu significado:
",serif">"">struct Nodo{
",serif">""> int valor;
",serif">""> struct Nodo *p;
",serif">"">};
",serif">"">typedef struct Nodo node;
",serif">"">int metodo(nodo *lista) {
",serif">""> node *no= lista->p;
",serif">""> return no->valor;
",serif">"">}
Resposta correta.
A.
Retorna o primeiro elemento da lista.
O método descrito acessa a lista e captura o valor do primeiro elemento. Portanto, retorna o
primeiro elemento da lista.
AULA 11
1.
Baseando-se no conceito de lista dinâmica encadeada, marque a alternativa correta em
relação à inclusão de elementos: 
Você acertou!
C.
A inclusão de elementos deve ocorrer em qualquer posição da lista. 
Uma lista encadeada não tem um limite máximo de itens, pois a alocação é feita em tempo de
execução, sendo que o limite é o tamanho da memória disponível no equipamento. Deve, ainda,
permitir a inclusão em qualquer posição da lista, que fará a nova ligação para mantê-la
encadeada.
2.
Em relação às listas simplesmente encadeadas, leia as alternativas a seguir e indique a
correta:
Você acertou!
D.
Alocam apenas a memória necessária para armazenar os elementos da lista.
Uma lista simplesmente encadeada aponta apenas para o elemento posterior da cadeia, cuja
pesquisa é sequencial. Por isso, é mais lenta para encontrar elementos, visto que seu tempo de
busca é crescente e varia conforme a quantidade de itens da lista. No entanto, é rápida para
inserir/excluir e não requer posições contínuas na memória, pois a alocação é dinâmica e
otimizada, utilizando apenas o necessário.
3.
Marque a alternativa correta em relação às vantagens de uma lista dinâmica:
Você acertou!
A.
Permitem aumento e redução do tamanho da lista em tempo de execução.
Uma lista dinâmica permite o aumento e a redução do número de itens em tempo de execução,
sem precisar alocar posições contínuas de memória, como os arrays e matrizes. Nesse tipo de
lista, não existe busca indexada, pois toda pesquisa é sequencial a partir do primeiro elemento.
São rápidas para inserir em qualquer posição da lista e não utilizam arrays para armazenar
endereços de memória, pois usam ponteiros.
4.
Analise o seguinte código baseado na linguagem C e marque a alternativa que
representa o seu significado:
nodo *item= (nodo *) malloc(sizeof(nodo));
nodo *no= L->prox;
while(no->prox != NULL) {
no= no->prox;
}
no->prox = item;
Você acertou!
B.
Adiciona um novo elemento no final da lista.
O código descrito faz uma varredura na lista até chegar à última posição. Na sequência, faz o
último item apontar para o elemento que foi criado (*item). Portanto, adiciona um novo elemento
no final da lista.
5.
Levando em consideração os conceitos de uma lista simplesmente encadeada, assinale a
alternativa que melhor representa a sua utilização:
Você acertou!
C.
Listas grandes, com muitas inserções e em qualquer posição.
Uma lista simplesmente encadeada é recomendada para listas grandes, que podem ter muitas
inserções e exclusões, cujo tamanho pode ser indefinido. No entanto, não apresentam pesquisa
indexada, e a varredura ocorre apenas em uma direção.
AULA 12
1.
Listas encadeadas duplas são estruturas com características específicas. Baseando-se
no conceito de lista encadeada dupla, marque a alternativa correta:
Você acertou!
E.
Cada elemento apresenta dois atributos do tipo ponteiro da lista, usados para referenciar o
elemento anterior e próximo.
Em uma lista encadeada dupla, cada elemento tem dois atributos do tipo ponteiro da lista. O
anterior ao primeiro elemento e o posterior ao último apontam para NULL. Os elementos da lista
não precisam necessariamente ser estruturas compostas, podendo também ser tipos primitivos.
Deve, ainda, permitir a inclusão em qualquer posição da lista, e não apresenta um limite máximo
de itens, pois a alocação é feita em tempo de execução.
2.
O duplo encadeamento em listas permite que façamos operações onde a navegação é
feita nos dois sentidos, como em um reprodutor de música. Em relação às listas com
encadeamento duplo, leia as alternativas a seguir e indique a correta:
Você acertou!
E.
 Alocam apenas a memória necessária para armazenar os elementos atuais da lista.
Em uma lista dinâmica com encadeamento duplo, cada elemento aponta para o elemento
anterior e posterior da cadeia, cuja pesquisa é sequencial e pode ter ambos os sentidos, não
permitindo acesso direto a determinado elemento sem ter que navegar na lista. Por ser
dinâmica, alocando apenas a memória necessária para armazenar os elementos atuais da lista. 
3.
Cada estrutura de dados apresenta métodos diferentes para a inserção e exclusão de
elementos. Baseando-se no conceito de lista encadeada dupla.
Marque a alternativa correta em relação à inclusão de elementos:
Você acertou!
E.
A inclusão de elementos pode ocorrer em qualquer posição da lista.
Uma lista encadeada dupla deve permitir a inclusão em qualquer posição da lista, que fará a
nova ligação para manter a lista encadeada, e não tem um limite máximo de itens, pois a
alocação é feita em tempo de execução, sendo o limite o tamanho da memória disponível no
equipamento.
4.
Listas duplamente encadeadas se diferenciam de outros tipos de lista por causa de
algumas características específicas. Sobre lista duplamente encadeada.
Marque a alternativa correta em relação às suas características:
Você acertou!
E.
Os elementos podem conter variáveis de um tipo primitivo ou estruturas compostas.
Em uma lista duplamente encadeada, os elementos podem conter variáveis de um tipo primitivo
ou estruturas compostas, sendo que o anterior do primeiro elemento e o posterior do último
apontam para NULL, para indicar o início e o final da lista. A inclusão pode ser realizada em
qualquer ponto da lista, e a exclusão de um elemento não a divide em duas.
5.
Para cada tipo de manipulação de itens em uma lista encadeada dupla, nós precisamos
desenvolver diferentes métodos, por exemplo para inclusão e exclusão de elementos.
Analise o seguinte método e marque a alternativa que representa o seu significado:
struct Node{
int numero;
struct Node *ant;
struct Node *prox;
};
typedef struct Node node;
struct Descritor{
int n;
struct Node *prim;
struct Node *ult;
};
typedef struct Descritor descritor;
void metodo(descritor *desc, node *list) {
node *u= desc->ult;
node *p= u->ant;
p->prox= NULL;
desc->ult= p;
free(u);
desc->n--;
}
Você acertou!
E.
Remove o último elemento da lista.
O método apresentado recebe o endereço do último elemento e do penúltimo. Na sequência, faz
o descritor apontar o final da lista para o penúltimo elemento e o próximo dele para NULL.
Portanto, exclui o último elemento da lista.
AULA 13
1.
Tratando-se de estruturas de dados em árvore, qual das opções abaixo representa o
conceito de folha?
Você acertou!
B.Um nó que não possui sub-árvores.
Folha é um nó que possui grau zero, ou seja, não possui sub-árvores.
2. Dada a seguinte árvore, em relação ao nó 4 podemos afirmar que:
Você acertou!
E.
O nó 4 é filho do nó 1 e pai dos nós 7, 8 e 9.
O caminho da árvore é composto por uma sequencia de nós consecutivos seguindo a relação
onde ni é pai de nj+1. Os nós 2 e 3 são nós irmãoes do nó 4.
3.
Qual é a principal característica de uma árvore binária completa?
Você acertou!
A.
Possuir todas folhas no mesmo nível.
Uma arvore binária completa possui todas as folhas no mesmo nível k. Mesmo possuindo
muitos nós, a distância entre a raiz e uma folha qualquer é relativamente curta.
4.
Que grau possui a árvore abaixo?
Você acertou!
B.
A árvore é grau 2.
O grau da árvore é o maior valor de grau de nó entre todos os nós da árvore.
5. Quais são as folhas da árvore abaixo?
Você acertou!
D.
D, G, H e I.
O elemento que não possui galhos é conhecido como folha ou nó terminal.
AULA 14
1.
Qual das características a seguir representa uma árvore binária de busca?
Você acertou!
B.
A subárvore à direita possui valores maiores que a raiz.
Uma árvore binária de busca possui as mesmas propriedades de uma árvore binária comum,
acrescida das seguintes características: os nós pertencentes à sua subárvore esquerda
possuem valores menores que a chave; os nós pertencentes à sua subárvore direita possuem
valores maiores que a chave; e um percurso em in-ordem, nessa árvore, resulta na sequência
de valores em ordem crescente.
2. Uma das operações típicamente realizadas em árvores binárias de busca é a busca por
um elemento da árvore. Na árvore a seguir, caso fosse necessário buscar o valor 8,
quantas comparações deveriam ser realizadas até encontrá-lo?
Você acertou!
C.
Três comparações.
As comparações realizadas são: 1) 8>5; 2) 8>7 e 3) 8=8. Na realização de uma busca em
árvore binária, é necessário examinar a raiz. Caso o valor seja igual à raiz, significa que o valor
existe na árvore. Caso ele seja menor que a raiz, deve-se realizar uma busca na subárvore à
esquerda e, assim, recursivamente em todos os nós da subárvore.
3. A árvore a seguir foi percorrida na seguinte sequência: DBGEHIFCA.
 Qual o tipo de percurso utilizado?
Você acertou!
A.
Pós-ordem.
Pós-ordem - o percurso inicia pelas folhas. No percurso realizado a partir do critério de
pós-ordem, os filhos são processados antes do nó.
4. Qual o principal objetivo da organização de dados em estruturas de árvores binária de
busca?
Você acertou!
E.
Facilitar a busca de um determinado valor.
Devido à organização da árvore, a busca por elementos é mais ágil. Desde a raiz, é possível
percorrer a árvore em busca do valor desejado, para tanto, basta verificar se o valor procurado é
maior, menor ou igual ao nó que está posicionado.
5. Quantas folhas existem na árvore a seguir?
Você acertou!
D.
Duas folhas.
Folha é um nó que não tem filhos, podendo ser chamada, também, de nó terminal, portanto, a
árvore possui duas folhas.
AULA 15
1.
Qual a diferença entre uma árvore AVL e uma árvore binária em busca?
Você acertou!
A.
A árvore AVL é uma árvore binária de busca balanceada, cuja altura das subárvores se difere no
máximo em 1.
A árvore AVL é uma árvore binária de busca balanceada em que, para cada nó, as alturas das
subárvores diferem em 1, no máximo. Ela foi proposta em 1962, pelos matemáticos russos G.M.
Adelson-Velskii e E.M. Landis, e o nome da árvore vem das iniciais dos seus nomes.
2. Inserindo os elementos 10, 3 e 2 em uma árvore binária, obtém-se a seguinte árvore
desbalanceada:
 Em qual dos itens é posssível ver a rotação que foi feita e a árvore balanceada gerada a
partir dessa rotação?
Você acertou!
E.
ROTAÇÃO A DIREITA
A árvore ficou desbalanceada com a inserção de um nó à esquerda da subárvore à esquerda,
sendo preciso que se faça uma rotação à direita. Os passos para essa rotação são:
O filho da esquerda vira a nova raiz.
A raiz original se torna o filho à direita da nova raiz.
3.
Quando inserimos um nó à direita da subárvore direita de uma árvore AVL, e essa
inserção gera um desbalanceamento da árvore, qual a rotação que precisamos fazer para
que a árvore fique balanceada novamente?
Você acertou!
C.
Rotação simples à esquerda.
Como a direção da subárvore e da inserção do nó é a mesma, precisamos fazer uma rotação
simples. Nesse caso, é uma rotação simples à esquerda para arrumar o desbalanceamento à
direita.
4. A operação representada pelas 3 árvores abaixo é uma operação de rotação, de onde
se inicia com uma árvore desbalanceada e se chega a uma árvore balanceada (da
esquerda para direita).
Resposta correta.
D.
Rotação dupla esquerda.
A árvore desbalanceada (árvore mais à esquerda), está visualmente em ziguezague, o que
elimina as rotações simples. Como o nó P, gerador do desbalanceamento, foi inserido à
esquerda de uma subárvore à direita, a rotação dupla que deve ser feita é uma rotação dupla à
esquerda.
5.
Uma rotação dupla é realizada, unindo duas rotações simples. Assim, uma rotação dupla
à direita é realizada da seguinte forma:
Você acertou!
D.
uma rotação simples à esquerda e uma rotação simples à direita.
A rotação dupla é utilizada quando o desbalanceamento da árvore ocorreu, gerando uma
ziguezague na estrutura desta. Nesses casos, não basta uma rotação simples. A rotação dupla
à direita tem os seguintes passos:
- Rotação à esquerda na subárvore à esquerda.
- Rotação à direita na subárvore que foi gerada a partir da primeira rotação.
AULA 16
1.
Temos no contexto computacional diversas nomenclaturas e definições acerca dos
conceitos e de suas respectivas aplicações. Assinale a alternativa que traz o conceito que
define o que é um grafo. 
Você acertou!
A.
É um agrupamento formado por arestas e vértices.
Grafo é um agrupamento formado por arestas e vértices que tem como principal função fazer a
conexão entre os objetos dentro do contexto da estrutura de dados. Já o vértice é entidade de
formação simples, a qual pode ter nomes e atributos. A responsabilidade de permitir que haja a
conexão entre dois vértices é dada às arestas. As distâncias são os chamados pesos.
2.
Os grafos, assim como outros elementos da estrutura de dados, têm diversos meios de
representação. Assinale a alternativa que traz um exemplo prático de um grafo em nosso
cotidiano. 
Você acertou!
B.
A cidade de São Paulo, a BR-116 e a cidade do Rio de Janeiro.
Uma estrada remete apenas a uma aresta, tendo em vista que um grafo é formado por mais
elementos. Podemos fazer uma analogia com os elementos de um grafo, em que as cidades
seriam os vértices e as estradas seriam as arestas que fazem as ligações entre os vértices. Um
círculo não remete ao uso dos elementos de um grafo, os quais formam outros tipos de
representação gráfica. Um telefone, por si só, não remete ao exemplo de uso de um grafo,
porém, podemos dizer que havendo a inserção dele em um contexto em que uma pessoa liga
para outra, e esta também faz uma ligação, poderíamos ter um grafo. A bicicleta, por si só, não
remete a ideia de um grafo. Dentro deste contexto, poderíamos dizer que caso a alternativa
tivesse feito relação, por exemplo, ao aro da bicicleta, poderíamos visualizar a aplicação dos
elementos de um grafo.
3.
As arestas podem ser definidas tanto como dirigidas/orientadas quanto como não
dirigidas/não orientadas. Dessa forma, assinale a alternativa que traz as definições
corretas destes conceitos. 
Resposta correta.
D.
A orientação de um grafo é definida caso haja uma aresta de um ponto para outro indicando a
direção da passagem do grafo. Enquanto um grafo não orientado pode ser definido apenas
como sendo um grafo.
A orientação dos grafos é útil, pois os vértices e arestas muitas vezes trazem mais informações
ao contexto do algoritmo, principalmente quando são utilizados pesos, para definir a
simplicidade ou não dessas ligações. Uma aresta (u,v) é dita dirigida de u para v se o par (u,v)
for ordenado, com u precedendo v. Uma aresta (u,v) é ditanão dirigida se o par (u,v) não for
ordenado. As arestas não dirigidas são por vezes denotadas como conjuntos {u,v}, mas, para
simplificar, será utilizada a notação de pares (u,v), notando que no caso não dirigido (u,v) é o
mesmo que (v,u).
4.
A interligação dos vértices permite que haja diversas formas de acessá-los, uma delas
possibilita que medidas sejam atendidas, como a marcação de vértices que foram ou não
acessados. Assinale a alternativa que traz o tipo de estrutura de dados relacionado ao
conceito citado. 
Resposta correta.
C.
Algoritmo de busca por profundidade.
O grafo permite o uso de vértices e arestas, que podem, além de agir de formas diferentes,
receber diversas outras nomenclaturas, principalmente relacionadas à maneira de acesso aos
elementos e como este será realizado, podendo ser por meio de matrizes, listas e diversos
algoritmos. De acordo com Szwarcfiter et al. (1986 apud ASCENCIOet al., 2010, p. 378), uma
busca em profundidade é aquela que atende ao seguinte critério para explorar um vértice
marcado: dentre os vários marcados e incidentes a alguma aresta ainda não explorada, escolher
aquele vértice mais recentemente alcançado na busca.
5.
Um grafo pode ser representado de forma adequada por meio de matrizes e listas, tendo
cada uma delas uma maneira diferente de representação e acesso aos elementos. O
armazenamento das arestas com um componente adicional acontece por meio de qual
estrutura? 
Você acertou!
A.
Matriz de adjacência.
As estruturas de dados para grafos usam coleções para realizar o armazenamento dos vértices
do grafo. Cada estrutura acaba utilizando diferentes meios para armazenar e acessar as
informações dos grafos. Dado um grafo G (V, E), uma matriz de adjacências M é formada por n
linhas e n colunas, sendo n o número de vértices do grafo.

Outros materiais