MAPA - ESOFT - ESTRUTURAS DE DADOS - 52_2025

Uma rede de lojas de produtos naturais utiliza um sistema automatizado para planejar as rotas de entrega dos caminhões. Cada parada da rota representa uma loja que deve ser visitada. No sistema antigo, sempre que uma nova loja era adicionada no meio da rota, era necessário realocar todos os elementos da estrutura, resultando em lentidão e consumo excessivo de memória. Para resolver esse problema, decidiu-se utilizar uma estrutura de dados dinâmica, onde cada ponto da rota (loja) pudesse ser facilmente inserido ou removido sem a necessidade de deslocar os outros elementos da lista. Você foi contratado para ajudar a equipe de desenvolvimento a implementar essa nova estrutura. Abaixo está o código inicial de uma lista ligada com algumas funções incompletas. Seu desafio é completar o método inserir_na_posicao para que ele insira uma nova loja (representada por seu nome) em uma posição específica da rota.

 

class Loja:

def __init__(self, nome):

self.nome = nome

self.proximo = None

 

class RotaEntrega:

def __init__(self):

self.inicio = None

 

def inserir_inicio(self, nome_loja):

nova_loja = Loja(nome_loja)

nova_loja.proximo = self.inicio

self.inicio = nova_loja

 

def inserir_na_posicao(self, nome_loja, posicao):

# COMPLETE AQUI: implementar a lógica de inserção na posição

pass

 

def imprimir_rota(self):

atual = self.inicio

while atual:

print(f" {atual.nome}")

atual = atual.proximo

 

# TESTE DO CÓDIGO

rota = RotaEntrega()

rota.inserir_inicio("Loja D")

rota.inserir_inicio("Loja B")

rota.inserir_inicio("Loja A")

 

# Inserir a "Loja C" entre "Loja B" e "Loja D" (posição 2)

rota.inserir_na_posicao("Loja C", 2)

 

print(" Rota final:")

rota.imprimir_rota()

 

# Saída esperada:

# Loja A

# Loja B

# Loja C

# Loja D