С ходу же:
try
{
if (from > to)
throw "Incorrect couple 'from - to' for generating random numbers";
}
catch (const char *message)
{
std::cerr << message << '\n';
exit(1);
}
Зачем нужен такой изврат, если вы ловите исключение сразу же? Чем хуже
if (from > to)
{
std::cerr << message << '\n';
exit(1);
}
bool init(IntList1D &list, int number)
{
if (list == nullptr || *list == nullptr)
{
if (list == nullptr)
list = new IntList1D_element *;
*list = new IntList1D_element(number);
return true;
}
return false;
}
Чем меньше глубина вложенности, тем лучше. Ранний выход из функции лучше, чем выход в самом конце. Сравните
bool init(IntList1D &list, int number)
{
if (is_initialized(list))
{
return false;
}
if (list == nullptr)
{
list = new IntList1D_element *;
}
*list = new IntList1D_element(number);
return true;
}
bool is_inited(const IntList1D list)
{
if (list == nullptr || *list == nullptr)
return false;
else
return true;
}
Здесь и название функции кривоватое и чересчур усложнена сама функция.
bool is_initialized(const IntList1D list)
{
return (list != nullptr && *list != nullptr)
}
Не соблюдаете единый стайлгайд. В некоторых местах одиночные строки после if взяты в фигурные скобки, в некоторых нет. Выберите один какой-либо стиль и придерживайтесь его. (Hint: добавлять строки гораздо проще, если всегда используются фигурные скобки).