In quei termini no.
In stl quel codice si traduce come:
std::list<int> my_list;
my_list.push_back(10);
std::list<int>::iterator it = my_list.begin();
if (it == my_list.end())
cout << "end list" << endl;
ossia l'intervallo è sempre valido tra my_list.begin() e my_list.end().
(A seconda dello standard del compilatore che stai usando, l'esempio può variare. Questo è codice pre C++11)
Tutte le operazioni come
inizioLista->next = NULL;
if (p->next == NULL)
sono gestite internamente a std::list senza possibilità di accesso.