Вставка элементов в список
Односвязный список, есть две функции вставки элемента в конец списка и в начало списка. Вот они. Функция вставки элемента в начало списка:
void addToStart(TStud * &Start, TStud * PNew)
{
PNew->next=Start; // В новый элемент в поле Next заносится
// адрес предыдущего первого элемента
Start=PNew; // Переменной Start заносится адрес нового элемента
}
Функция вставки в конец списка:
void addToEnd(TStud * &Start, TStud * PNew)
{
TStud * WP; // объявления рабочего указателя
PNew->next=NULL; // новый элемент в любом случае будет последним
if (Start == NULL)// если список пуст
{
Start=PNew; // новый элемент становится первым и последним элементом
return; // выход из функции, элемент добавлен в список
}
WP=Start; // инициализация рабочего указателя первым элементом
while(WP->next!=NULL) // цикл прохода по списку пока WP - не последний
{
WP=WP->next; // в WP заносим адрес следующего элемента
}
// теперь WP удерживает адрес последнего элемента списка
WP->next=PNew; // «Привязываем» новый элемент до последнего
}
Теперь сам вопрос. Можно ли эти функции объединить? Т.е чтобы вместо двух функцию была одна, которая определяла самостоятельно куда нужно вставить элемент в зависимости от его значения ( максимальный элемент в конец списка, минимальный в начало списка ). Объясните как это можно сделать?