Сортировка вектора в односвязном списке
по учебе есть задание : Разработать программу сортировки вектора, по убыванию. Элементы вектора вводятся с клавиатуры и хранятся в связанном списке. Создал односвязный список, с помощью рандома заполняю его. Такой вопрос, как сравнивать элементы которые хранятся в списке, ну и соответственно сделать вывод, подскажите пожалуйста. Код :
#include <iostream>
#include <string>
using namespace std;
template<typename T>
class List
{
public:
List();
~List();
void push_back(T data);
int GetSize() { return LSize; }
T& operator[](const int index);
private:
template<typename T>
class Node
{
public:
Node *pNext;
T data;
Node(T data=T(), Node* pNext = nullptr)
{
this->data = data;
this->pNext = pNext;
}
};
int LSize;
Node<T> *head;
};
template<typename T>
List<T>::List()
{
LSize = 0;
head = nullptr;
}
template<typename T>
List<T>::~List()
{
}
template<typename T>
void List<T>::push_back(T data)
{
if (head == nullptr)
{
head = new Node<T>(data);
}
else
{
Node<T>* current = this->head;
while (current->pNext !=nullptr)
{
current = current->pNext;
}
current->pNext = new Node<T>(data);
}
LSize++;
}
template<typename T>
T& List<T>::operator[](const int index)
{
int countr = 0;
Node<T>* current = this->head;
while (current != nullptr)
{
if (countr == index)
{
return current->data;
}
current = current->pNext;
countr++;
}
}
int main()
{
setlocale(LC_ALL, "ru");
List<int> lst;
int numbcountr;
cin >> numbcountr;
for (int i = 0; i < numbcountr; i++)
{
lst.push_back(rand() % 10);
}
cout << "{ ";
for (int i = 0; i < lst.GetSize(); i++)
{
cout << " " << lst[i] << " ";
}
cout << " }";
}
Память не освобождал. Голова уже кипит, сдача завтра, а придумать ничего не могу.