Помогите упорядочить список по убыванию
Нужно упорядочить элементы списка по убыванию. Список создал, элементы добавляю, а вот упорядочить его - тут проблема.
#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 шт):
для этого нужно реализовать сортировку для вашего списка - рекомендую использовать пузырьковую: она очень проста в реализации и для списка (учитывая отсутствие доступа к элементам по индексу) будет работать достаточно быстро. И лучше компаратор сделать опциональным, чтобы не пришлось писать сортировку для каждого случая отдельно
компаратор это просто функция, которая принимает два значения и возвращает некоторое значение (обычно bool), которое сигнализирует о том, что значения не равны или равны. Если значения могут интерпретироваться как больше или меньше, то компаратор может использоваться для сортировки