Обертання списку
Дуже проста
Обмеження на час виконання 1 секунда
Обмеження на використання пам'яті 64 мегабайти
Задано масив цілих чисел. Створіть Зв’язний Список із цих чисел.
Реалізуйте метод 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
.
Приклади
Вхідні дані #1
Відповідь #1
Відправки 1K
Коефіцієнт прийняття 38%