Изменение порядка списка
Задан массив целых чисел. Создайте Связный Список из этих чисел.
Реализуйте метод ReorderList
, который перегруппирует список L[0]
→ L[1]
→ L[2]
→ ... → L[n-1]
→ L[n]
в список L[0]
→ L[n]
→ L[1]
→ L[n-1]
→ L[2]
→ L[n-2]
→ ... .
Напишите код согласно следующего интерфейса:
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 ReorderList(void) // Перегруппировка элементов списка как приведено выше
void Print(void); // Выведите элементы Связного Списка
};
Вы можете создавать (использовать) по необходимости дополнительные методы.
Входные данные
Первая строка содержит число n (1 ≤ n ≤ 10000). Вторая строка содержит n целых чисел.
Выходные данные
Выведите элементы Связного Списка после перегруппировки его элементов, используя метод Print.