Помогите упорядочить список по убыванию

Нужно упорядочить элементы списка по убыванию. Список создал, элементы добавляю, а вот упорядочить его - тут проблема.

#include <iostream>
#include <string>
using namespace std;
/*
Реализация списков
*/
template<typename T>
class List {
public:
    List();
    void push_back(T data);
    int getSize() { return size; }
    T& operator[](const int index);
private:
    template<typename T>
    class Node {
    public: Node* pNext;
          T data;
          Node(T data, Node* pNext = nullptr) {
              this->data = data;
              this->pNext = pNext;
          }
    };
    int size;
    Node<T>* head;
};


template<typename T>
List<T>::List() {
    size = 0;
    head = nullptr;
}

template<typename T>
T& List<T>::operator[](const int index)
{
    int counter = 0;
    Node<T>* current = this->head;
    while (current != nullptr) {
        if (counter == index) {
            return current->data;
        }
        current = current->pNext;
        counter++;
    }


}



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);

    }
    size++;

}


int main()
{
    setlocale(0, "ru");
    List<int> lst;

    int length = 0;
    int k = 0;
    cout << "Введите размер списка:";
    cin >> length;
    for (int i = 0; i < length; i++) {
        cout << "Введите " << i << " элемент списка:";
        cin >> k;
        lst.push_back(k);
    }

    return 0;
}

Ответы (1 шт):

Автор решения: jokerbot

для этого нужно реализовать сортировку для вашего списка - рекомендую использовать пузырьковую: она очень проста в реализации и для списка (учитывая отсутствие доступа к элементам по индексу) будет работать достаточно быстро. И лучше компаратор сделать опциональным, чтобы не пришлось писать сортировку для каждого случая отдельно

компаратор это просто функция, которая принимает два значения и возвращает некоторое значение (обычно bool), которое сигнализирует о том, что значения не равны или равны. Если значения могут интерпретироваться как больше или меньше, то компаратор может использоваться для сортировки

→ Ссылка