I've seen many a times node classes in C++ being defined as:
struct node* pointerToAnyLinkedNode;
It's because this idiom originated in C (where struct types have to be named with
struct at the start) and a disturbingly large proportion of the C++ community copy/pastes their code from online tutorials, rather than actually thinking about what they're doing.
(This is also why you'll see
struct tm everywhere in C++ code, for no good reason.)
In C++, the
struct keyword is redundant here.
To be fair, if you're writing a header and aiming for compatibility with C programs, that's a good reason to leave it in.