La mejor práctica para cambiar una secuencia de manera circular

Tengo que implementar una especie de matriz, secuencia o lista, que admita la forma más barata de reenvío y rebobinado de elementos circulados. Vea este ejemplo:

Original sequence: 1 2 3 4 5

Forwarded once: 5 1 2 3 4
Forwarded twice: 4 5 1 2 3

Same pero lo contrario es para el devanado posterior. ¿Cuál sería la forma más económica y más al estilo Scala de implementar esto? En Java podría usar LinkedList y sería genial ... Sin embargo, no pude encontrar ninguna respuesta definitiva para Scala.

Además, también tiene que ser fácil reemplazar cualquier elemento por índice, como en LinkedList.

ACTUALIZAR

Para la variante de algoritmo más rápida, pero no tan idiomática (ya sabes cuándo la necesitas), consulta la respuesta de Petr Pudlák !!!

Respuestas a la pregunta(22)

Su respuesta a la pregunta