Вращение списка
Задан массив целых чисел. Создайте Связный Список из этих чисел.
Реализуйте метод RotateRight
, который вращает Список вправо на k позиций, где k - неотрицательное целое число.
Например, если List = 1 → 2 → 3 → 4 → 5 → NULL и k = 2, то после вращения List = 4 → 5 → 1 → 2 → 3 → NULL.
Напишите код согласно следующего интерфейса:
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 (1 ≤ n ≤ 100). Вторая строка содержит n целых чисел. Каждая из следующих строк содержит одно число k (0 ≤ k ≤ 10^9
).
Выходные данные
Для каждого значения k выведите в отдельной строке элементы Связного Списка после совершения его вращения вправо на k позиций. Выводить элементы списка следует используя метод Print.