Сортировка списка с++

Не понимаю как правильно сортировать список по параметру. Я в с++ совсем новичок, так что как можно проще пожалуйста:(. Может быть можно именно выводить отсортированных список? То есть сделать цикл с постепенно понижающимся условием вывода или типа того? Заранее спасибо!

#include <string>
#include <iostream>
#include <cstdlib>
using namespace std;

struct Tour
{
public:
    string TourName;
    string TourCountry;
    string HotelName;
    int HotelRaitingStars;
    string AllIncludedAnswer;
    bool AllIncluded;
    int price;
    int duration;
    Tour* next;
    
    Tour(string TourNameC = "", string TourCountryC = "", string otchestvoC = "", string HotelNameC = "", int HotelRaitingStarsC = 0, bool AllIncludedC = false, char genderC = 'm', int priceC = 0, int durationC = 0)
    {
        TourName = TourNameC;
        TourCountry = TourCountryC;
        HotelName = HotelNameC;
        HotelRaitingStars = HotelRaitingStarsC;
        AllIncluded = AllIncludedC;
        price = priceC;
        duration = durationC;
    }
    Tour* AddTour(Tour* ptr)
    {
        Tour* tempFirst = new Tour;
        cout << "Введите название тура" << endl;
        cin >> tempFirst->TourName;
        cout << "Введите название страны" << endl;
        cin >> tempFirst->TourCountry;
        cout << "Введите отеля" << endl;
        cin >> tempFirst->HotelName;
        cout << "Введите оценку отеля в звездах" << endl;
        cin >> tempFirst->HotelRaitingStars;
        cout << "Укажите, все ли включено в путевку? Да/нет" << endl;
        cin >> AllIncludedAnswer;
        if (AllIncludedAnswer == "Да")
            AllIncluded = true;
        else
            AllIncluded = false;
        cout << "Введите продолжительность в сутках" << endl;
        cin >> tempFirst->duration;
        cout << "Введите цену" << endl;
        cin >> tempFirst->price;
        tempFirst->next = ptr;
        ptr = tempFirst;
        return ptr;
    }
};

void GetTourList(Tour* TourList)
{
    for (Tour* ptr = TourList; ptr; ptr = ptr->next)
    {
        cout << "Доступные предложения: " << ptr->TourName << '\t' << ptr->TourCountry << '\t' << ptr->HotelName << '\t'
            << ptr->HotelRaitingStars << '\t' << ptr->duration << '\t' << ptr->price << '\t' << endl;
    }
}
Tour* AddTour(Tour* ptr)
{
    Tour* tempFirst = new Tour;
    cout << "Введите название тура" << endl;
    cin >> tempFirst->TourName;
    cout << "Введите название страны" << endl;
    cin >> tempFirst->TourCountry;
    cout << "Введите отеля" << endl;
    cin >> tempFirst->HotelName;
    cout << "Введите оценку отеля в звездах" << endl;
    cin >> tempFirst->HotelRaitingStars;
    cout << "Укажите, все ли включено в путевку? Да/нет" << endl;
    cout << "Введите продолжительность в сутках" << endl;
    cin >> tempFirst->duration;
    cout << "Введите цену" << endl;
    cin >> tempFirst->price;
    tempFirst->next = ptr;
    ptr = tempFirst;
    return ptr;
}
Tour* DeleteElem(Tour* ptr)
{
    Tour* tempTour = ptr;
    cout << "Введите символ который хотите удалить из списка (считая что 1 символ это 0, 2 это 1 и т.д.) " << endl;
    int k;
    cin >> k;
    if (k == 0)
    {
        Tour* temp = ptr;
        ptr = ptr->next;
        delete temp;
        return ptr;
    }
    for (int i = 0; i < k - 1; i++)
    {
        if (tempTour->next == nullptr)
        {
            cout << "Указанный элемент отсутствует в списке" << endl;
            return ptr;
        }
        tempTour = tempTour->next;
    }
    Tour* temp = tempTour->next;
    tempTour->next = tempTour->next->next;
    delete temp;
    return ptr;
}
Tour* SortedTourList(Tour* ptr)
{

}
void PriceSetTourList(Tour* TourList)
{
    cout << "Введите цену, ниже которой будут выводиться предложения" << endl;
    int q;
    cin >> q;
    for (Tour* ptr = TourList; ptr; ptr = ptr->next)
    {
        if(ptr->price < q)
        cout << "Доступные предложения: " << ptr->TourName << '\t' << ptr->TourCountry << '\t' << ptr->HotelName << '\t'
            << ptr->HotelRaitingStars << '\t' << ptr->duration << '\t' << ptr->price << '\t' << endl;
    }
}
int main()
{
    system("chcp 1251 > NUL");
    Tour* CurrentTourList = nullptr;
    while (true)
    {
        cout << "Туристический оператор. Туры и ценовые предложения" << endl;
        cout << "Выберите действие:\n"
            << "1) Добавить новый тур\n"
            << "2) Удалить тур\n"
            << "3) Вывести список туров\n"
            << "4) Сортировать список туров по цене\n"
            << "5) Вывести туры ниже заданной цены\n"
            << "0) Выйти из программы" << endl;
        int a;
        cin >> a;
        switch (a)
        {
        case 1: //Добавить новый тур
        {
            CurrentTourList = AddTour(CurrentTourList);
            break;
        }
        case 2: //Удалить тур
        {
            CurrentTourList = DeleteElem(CurrentTourList);
            break;
        }
        case 3: //Вывести список туров
        {
            GetTourList(CurrentTourList);
            break;
        }
        case 4: //Сортировать список туров по цене
        {
            SortedTourList(CurrentTourList);
            break;
        }
        case 5:
        {
            PriceSetTourList(CurrentTourList);
            break;
        }
        case 0:
        {
            delete CurrentTourList;
            return 0;
        }
        default:
        {
            cout << "Такой опции нет\n" << endl;
        }
        return 0;
        }
    }
}

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