Buscar

Simulado_10

Prévia do material em texto

1a Questão
Qual a saída do código abaixo? 
 
def troca(vet): 
 for i in range(3): 
 if vet[i] != 0: 
 vet[i] = 0 
 else: 
 vet[i] = 1 
 return vet 
 
vet = [0] * 3 
for i in range(3): 
 vet[i] = i % 2 
troca (vet) 
print (vet)
[1, 1, 1]
 [1, 0, 1]
[1 ,2, 3]
[0, 1, 0]
[0, 0, 0]
 
 
Explicação:
O algoritmo pega os índices da lista (1,2,3) e calcula o resto da divisão deles por 2 (0,1,0). A função "troca" transforma os valores 0 em 1 e diferente de 0 em 1, tendo como saída (1,0,1)
 
 
 2a Questão
Qual o último elemento listado da pilha? 
 
def main(): 
 
 seq = [11, 22, 33, 444] 
 
 pilha = [] 
 for elemento in seq: 
 pilha.append(elemento) 
 
 while len(pilha) > 0: 
 print(pilha) 
 topo = pilha.pop() 
 print("objeto do topo: ", topo) 
 
main() 
33
1
22
 11
444
 
 
Explicação:
O comando pop lista e retira os elementos da pilha do último para o primeiro, por fim, restando somente o 11
 
 
 3a Questão
 Fazendo com que a operação de push seja dispendiosa, selecione o trecho de código que implementa a operação pop (empilhar).
def pop(): 
 if(q1.size()>0): 
 q2.poll() 
 elif (q2.size()>0): 
 q1.poll(); 
 
 def pop(): 
 if(q1.size()>0): 
 q1.poll() 
 elif (q2.size()>0): 
 q2.poll(); 
 
def pop(): 
 q2.poll() 
 q1.poll() 
 
Nenhuma das mencionadas
def pop(): 
 q1.poll() 
 q2.poll() 
 
 
 
Explicação:
Como a operação de push é dispendiosa, é evidente que o item requerido está na frente da fila, portanto apenas desenfileire o elemento da fila.
 
 
 4a Questão
Qual dos seguintes pontos é falso sobre a estrutura de dados lista ligada quando é comparada com a array?
Arrays têm melhor localidade de cache que pode torná-los melhores em termos de desempenho.
Acesso aleatório não é permitido em uma implementação típica de listas vinculadas
 O tamanho da matriz e das listas vinculadas podem mudar a qualquer momento.
As listas vinculadas normalmente não aceitam acesso aleatório
É fácil inserir e excluir elementos na Lista ligada
 
 
Explicação:
Arrays têm melhor localidade de cache que pode torná-los melhores em termos de desempenho; É fácil inserir e excluir elementos na Lista vinculada - só é preciso saber a localização de onde coloc
 
 
 5a Questão
Selecione o trecho de código que retorna o topo da pilha.
def top(): 
 if(q1.size()==0): 
 return q1.peek() 
 elif (q2.size()==0): 
 return q2.peek() 
 return 0; 
 
def top(): 
 if(q1.size()>0): 
 return q1.peek() 
 elif (q2.size()<0): 
 return q2.peek() 
 return 0 
 
def top(): 
 if(q1.size()>0): 
 return q1.poll() 
 elif (q2.size()<0): 
 return q2.poll() 
 return 0 
 
def top(): 
 if(q1.size()>0): 
 return q1.poll() 
 elif (q2.size()>0): 
 return q2.poll() 
 return 0 
 
 def top(): 
 if(q1.size()>0): 
 return q1.peek() 
 elif (q2.size()>0): 
 return q2.peek() 
 return 0 
 
 
 
Explicação:
Supondo que seja uma implementação dispendiosa, o topo da pilha estará na frente da fila, note que peek () apenas retorna o elemento front, enquanto poll () remove o elemento frontal da fila.
 
 
 6a Questão
Considere as seguintes asserções:
1. Os tipos de computação FIFO são eficientemente suportados pelos PILHAS.
2. A implementação de LISTAS em listas vinculadas é mais eficiente do que implementar LISTAS em uma matriz para quase todas as operações básicas da LISTA.
3. A implementação de FILAS em um array circular é mais eficiente do que implementar FILAS em um array linear com dois índices.
4. O tipo de computação LIFO é eficientemente suportado por FILAS.
Qual das seguintes opções está correta?
 2 e 4 
 
1 e 2 
 
1 e 3
3 e 4 
2 e 3 
 
 
Explicação:
Listas em uma matriz é um modo ineficiente de implementação, uma vez que as matrizes são estruturas estáticas. O uso de um array linear, por si só, já configura um modo ineficiente de acessar
valores.

Continue navegando