У меня есть следующие (односвязные списки) две разные структуры:
struct Main {
int data1;
std::string some_data;
Main *next;
}
struct Side {
int data2;
int data3;
Side *next;
}
И следующие две функции для удаления только первого узла из определенного связанного списка Main
или Side
:
void DeleteFirstMain(Main *&pHeadMain)
{
Main *MainToBeDeleted;
if (pHeadMain == nullptr)
std::cout << "List is already empty.";
else
{
MainToBeDeleted = pHeadMain;
pHeadMain = pHeadMain->next;
/* Clears the memory occupied by first node*/
delete MainToBeDeleted;
}
}
void DeleteFirstSide(Side *&pHeadSide)
{
Side *SideToBeDeleted;
if (pHeadSide == nullptr)
std::cout << "List is already empty.";
else
{
SideToBeDeleted = pHeadSide;
pHeadSide = pHeadSide->next;
/* Clears the memory occupied by first node*/
delete SideToBeDeleted;
}
}
И все прекрасно работает.
Однако я полагаю, что две функции можно объединить в одну и, таким образом, немного привести в порядок код - обе функции по сути делают одно и то же, но с разной структурой.Это довольно простой материал, но в C ++ я понятия не имею, как правильно передать структуру «шаблона» в функцию в качестве аргумента.
Как всегда, помощь приветствуется.Спасибо.