Вставка элементов в список

Односвязный список, есть две функции вставки элемента в конец списка и в начало списка. Вот они. Функция вставки элемента в начало списка:

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;   // «Привязываем» новый элемент до последнего
  }

Теперь сам вопрос. Можно ли эти функции объединить? Т.е чтобы вместо двух функцию была одна, которая определяла самостоятельно куда нужно вставить элемент в зависимости от его значения ( максимальный элемент в конец списка, минимальный в начало списка ). Объясните как это можно сделать?


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