Operacje
to dość dziwna nazwa, szczególnie, że wygląda na to, że jest to po prostu "Lista" :P W ogóle nazwy masz dobrane tak, żeby utrudnić sobie życie.
Wracając do tematu: Jeżeli chcesz pisać w C - to użyj C. Jeżeli już chcesz użyć C++ i - w tym przypadku - podejścia bardziej OOP, to może utwórz klasę, która będzie faktycznie reprezentować całość listy, oraz klasę, która będzie reprezentować pojedynczy element takiej listy. Lista może wtedy mieć jeden element "startowy", a właściwie wskaźnik, oraz kilka metod, które lista mieć powinna.
Mógłbyś też klasę reprezentującą element (Node) zrobić wewnętrzną dla Listy, czyli ukryć implementację, a na zewnątrz udostępnić klasę będącą "iteratorem".
if (tmp == Operacje::struktura)
- czy istnieje taka sytuacja, w której ten warunek jest niespełniony? Może myślałeś o tmp->nast == Operacje::struktura
? (Ugh, serio, te nazwy są do zmiany. Dlaczego nie na ten przykład nie tmp->nastepny == element_startowy)
?