Реалізуйте структуру даних Односпрямований Зв'язний Список, яка підтримує такі операції:
Empty - Перевіряє, чи список порожній. Повертає true або false.
addFirst - Додає елемент на початок списку.
addLast - Додає елемент в кінець списку.
removeFirst - Видаляє елемент з початку списку.
removeLast - Видаляє елемент з кінця списку.
size - Повертає кількість елементів у списку.
Print - Виводить елементи списку в одному рядку.
Напишіть код відповідно до наступного інтерфейсу:
// Java
class ListNode
{
int data; // значення вершини
ListNode next; // посилання на наступну вершину
public ListNode(int data); // конструктор
}
class LinkedList
{
ListNode head, tail; // посилання на голову і хвіст списку
public LinkedList(); // конструктор
public boolean Empty(); // перевірка чи список порожній
public void addFirst(int val); // додати val на початок списку
public void addLast(int val); // додати val в кінець списку
public boolean removeFirst(); // видалити перший елемент списку, повернути true якщо видалення пройшло успішно
public boolean removeLast(); // видалити останній елемент списку, повернути true якщо видалення пройшло успішно
public int size(); // повернути розмір списку
public void Print(); // вивести значення списку в одному рядку
}// C++
class ListNode
{
public:
int data; // значення вершини
ListNode *next; // вказівник на наступну вершину
ListNode(int data); // конструктор
};
class LinkedList
{
public:
ListNode *head, *tail; // вказівники на голову і хвіст списку
LinkedList(); // конструктор
bool Empty(); // перевірка чи список порожній
void addFirst(int val); // додати val на початок списку
void addLast(int val); // додати val в кінець списку
bool removeFirst(); // видалити перший елемент списку, повернути true якщо видалення пройшло успішно
bool removeLast(); // видалити останній елемент списку, повернути true якщо видалення пройшло успішно
int size(); // повернути розмір списку
void Print(); // вивести значення списку в одному рядку
};