Baixe o app para aproveitar ainda mais
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.
Compartilhar