Сортировка списка с++
Не понимаю как правильно сортировать список по параметру. Я в с++ совсем новичок, так что как можно проще пожалуйста:(. Может быть можно именно выводить отсортированных список? То есть сделать цикл с постепенно понижающимся условием вывода или типа того? Заранее спасибо!
#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;
}
}
}