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++