Create SortedList

Задача 1

Дефинирайте шаблонен клас SortedList, който представлява списък от елементи, сортирани по даден признак. Нека елементите са от вида:

template <typename K, typename V>
struct Node
{
    K key;
    V value;
    Node* next;
};

value - стойност
key - ключ, по който да се сортират
next - връзка към следващия елемент в списъка.
Действията, които може да извършваме върху един сортиран списък, са:

getKey - връща ключа на елемента на даден индекс
getValue - връща стойноста на елемента на даден индекс
containsKey - по даден ключ определя дали има елемент с такъв ключ
containsValue - по дадена стойност определя дали има елемент с такава стойност
add - включва елемент в списъка по зададени ключ и стойност
remove - премахва елемент по зададен ключ
removeAt - премахва елемент на даден индекс
merge - слива подаден като аргумент списък в текущия (трябва да използвате алгоритъма за сливане на сортирани списъци - ще се обясни на упражненията)
size - връща броят на елементите в списъка (цяло положително число)
empty - връща true/false в зависимост от това дали списъкът е празен или не