Есть структура:
struck tel
{
int info;
tel *next; //указатель на след элемент списка
} *begin, t; //begin- указатель на начало
Функция для формирования списка:
tel* dob(tel *p, int in) {
tel *t = new list; // Захватываем память для элемента
t -> info = in; // Создаём информационную часть
t -> next = p; // Создаём адресную часть
return t;
}
Подскажите пожалуйста, как нужно дописать эту функцию, чтобы она сразу же сортировала элементы по убыванию info.
Вам нужно пройтись по списку в предположении, что он уже отсортирован, найти подходящее место для нового элемента так, чтобы список остался отсортированным после вставки, и, конечно, вставить элемент на найденное место.
Я бы на вашем месте не сортировал, а добавлял в то место куда необходимо. Пробегаем список от начала до конца, сравнивая элемент добавляемый нами с каждым. Если наш больше, запоминает куда указывал указатель у list в tmp, перезаписываем его чтобы указывал на наш элемент, а добавляемому элементу ставим next на tmp.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей