eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Вращение списка

Вращение списка

Задан массив целых чисел. Создайте Связный Список из этих чисел.

Реализуйте метод RotateRight, который вращает Список вправо на k позиций, где k - неотрицательное целое число.

Например, если List = 12345NULL и k = 2, то после вращения List = 45123NULL.

Напишите код согласно следующего интерфейса:

class Node

{

public:

int data;

Node *next;

Node() : next(NULL) {};

Node(int data, Node *next = NULL) : data(data), next(next) {};

};

class List

{

public:

Node *head, *tail;

List() : head(NULL), tail(NULL) {};

void AddToTail(int val); // Добавьте число val в конец Связного Списка

void RotateRight(int k) // Совершите вращение Связного Списка вправо на k позиций

void Print(void); // Выведите элементы Связного Списка

};

Вы можете создавать (использовать) по необходимости дополнительные методы.

Входные данные

Первая строка содержит число n (1n100). Вторая строка содержит n целых чисел. Каждая из следующих строк содержит одно число k (0k109).

Выходные данные

Для каждого значения k выведите в отдельной строке элементы Связного Списка после совершения его вращения вправо на k позиций. Выводить элементы списка следует используя метод Print.

Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
5
1 2 3 4 5
1
2
3
4
55
Выходные данные #1
5 1 2 3 4 
3 4 5 1 2 
5 1 2 3 4 
1 2 3 4 5 
1 2 3 4 5 
Автор Михаил Медведев
Источник Язык C++