Зміна порядку списку#7468

Зміна порядку списку

1 секунда
64 мегабайти
Дуже легка

Дано масив цілих чисел. Створіть зв'язаний список із цих чисел.

Напишіть метод ReorderList, який змінює порядок елементів списку з L_0 \rightarrow L_1 \rightarrow L_2 \rightarrow \ldots \rightarrow L_{n-1} \rightarrow L_n на L_0 \rightarrow L_n \rightarrow L_1 \rightarrow L_{n-1} \rightarrow L_2 \rightarrow L_{n-2} \rightarrow \ldots.

Напишіть код згідно з наступним інтерфейсом:

=== "C++" "'cpp 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); // Вивести елементи зв'язаного списку ; "' === "Python" "'python class Node:

def __init__(self, data: int): self.data: int = data self.next: [Node | None] = None

class List:

def __init__(self): self.head: [Node | None] = None self.tail: [Node | None] = None

def addToTail(self, val: int) -> None: """Додати число val у кінець зв'язаного списку""" pass

def ReorderList(self) -> None: """Перевпорядкувати список, як описано вище""" pass

def Print(self) -> None: """Вивести елементи зв'язаного списку""" pass "'

Ви можете створювати (використовувати) додаткові методи, якщо потрібно.

Вхідні дані

У першому рядку задано число (1 \le n \le 10000). У другому рядку містяться цілих чисел.

Вихідні дані

Виведіть елементи перевпорядкованого зв'язаного списку, використовуючи метод Print.

Приклади

Приклад 1

Loading
Loading